【发布时间】:2021-04-15 08:24:53
【问题描述】:
在我使用 React Query 的 React 项目中,我有一个功能组件 MoveKeywordModal,这样:
-
当它第一次加载时,它会从 API 端点
api/keyword_lists获取一组keywordLists数据。对于每一个keywordLists,我称之为list,我创建了一个可点击的元素。 -
当可点击元素(包裹在
HoverWrapper中)被点击时,我想向api/keyword_lists/:list_id/keyword_list_items/import发送一个带有一些数据的POST API 请求。 其中:list_id是刚刚点击的列表的id。
export const MoveKeywordModal = ({
setShowMoveKeywordModal,
keywordsToMove
}) => {
const { data: keywordLists } = useQuery('api/keyword_lists', {})
const [newKeywordList, setNewKeywordList] = useState({})
const { mutate: moveKeywordsToList } = useMutation(
`api/keyword_lists/${newKeywordList.id}/keyword_list_items/import`,
{
onSuccess: data => {
console.log(data)
},
onError: error => {
console.log(error)
}
}
)
const availableKeywordLists = keywordLists
.filter(l => l.id !== activeKeywordList.id)
.map(list => (
<HoverWrapper
id={list.id}
onClick={() => {
setNewKeywordList(list)
moveKeywordsToList({
variables: { newKeywordList, data: keywordsToMove }
})
}}>
<p>{list.name}</p>
</HoverWrapper>
))
return (
<>
<StyledModal
isVisible
handleBackdropClick={() => setShowMoveKeywordModal(false)}>
<div>{availableKeywordLists}</div>
</StyledModal>
</>
)
}
尽管在HoverWrapper 的onClick 中调用了setNewKeywordList(list),但似乎newKeywordList.id 仍未定义,甚至newKeywordList 也未定义。
我应该怎么做才能解决它?
谢谢!
【问题讨论】:
标签: reactjs react-hooks react-apollo react-query