Reactjs 我可以在函数中调用React钩子吗?

Reactjs 我可以在函数中调用React钩子吗?,reactjs,react-hooks,Reactjs,React Hooks,我想使用React Hook更改状态,并在单击按钮后将更改的状态传递给其他组件,从而重定向到新页面。所以我做了: const MovieCard = (props) => { const [movie, setMovie] = useState({}) function handleClick(movie) { setMovie(movie) props.history.push({ pathname: '/otherPage',

我想使用
React Hook
更改
状态
,并在单击按钮后将更改的状态传递给其他组件,从而重定向到新页面。所以我做了:

const MovieCard = (props) => {
  const [movie, setMovie] = useState({})
  
  function handleClick(movie) {
    setMovie(movie)
    props.history.push({
       pathname: '/otherPage',
       data: movie
    })
  }
  
  return(
     ...
       <Button onClick={() => handleClick(props.movie)} />
     ...
  )
}
const MovieCard=(道具)=>{
const[movie,setMovie]=useState({})
功能手柄点击(电影){
布景电影(电影)
道具,历史,推({
路径名:'/otherPage',
资料来源:电影
})
}
返回(
...
handleClick(道具电影)}/>
...
)
}
但是Hook没有更新状态。因为基于,它的工作原理如下:

<Button onClick={() => setMovie(props.movie)} />
setMovie(props.movie)}/>

可以在函数内部调用钩子吗?或者有什么方法可以这样做?

可以执行您正在执行的操作,但是,通过更改到另一个页面,您正在清除存储在该组件上的状态。您或者不需要重定向(我假设您不想这样做),或者需要将该状态传递给您重定向到的另一个组件。

可以执行您正在执行的操作,但是,通过更改到另一个页面,您正在清除存储在该组件上的状态。您要么不需要重定向(我假设您不想这样做),要么需要将该状态传递给要重定向到的另一个组件。

如果您已移动到另一个页面,您如何知道该状态是否已更改?似乎您正试图实现某种奇怪的效果。您的意思是要更新父组件中的某些内容吗?您正在导航到另一个页面,那么为什么要在此处设置状态?。你能用更多的信息更新这个问题吗details@AkhilAravind我遗漏了一些东西,我已经添加了它以使它更清晰为什么不使用传递给回调的值,而不是来自状态的值?请注意,您发布的内容应该有效,因为您已经用参数对状态进行了阴影处理。@在本例中,为什么要更新状态并移动到另一个组件,只需将值传递给其他组件即可。为什么不在此处使用
props.history.push({pathname:'/otherPage',data:props.movie})
如果您已移动到另一个页面,如何知道状态是否已更改?似乎您正在尝试实现一些奇怪的目标。您的意思是要更新父组件中的某些内容吗?您正在导航到另一个页面,那么为什么要在此处设置状态?。你能用更多的信息更新这个问题吗details@AkhilAravind我遗漏了一些东西,我已经添加了它以使它更清晰为什么不使用传递给回调的值,而不是来自状态的值?请注意,您发布的内容应该有效,因为您已经用参数对状态进行了阴影处理。@在本例中,为什么要更新状态并移动到另一个组件,只需将值传递给其他组件即可。为什么不在这里使用
props.history.push({pathname:'/otherPage',data:props.movie})
很抱歉,我的问题没有提供信息,我已经更新了。请再检查一遍。我同意乔尔沙普上面所说的。只需沿着历史传递数据,而不是试图使其进入状态。你应该可以把它弄出来。很抱歉,我的问题没有提供信息,我已经更新了。请再检查一遍。我同意乔尔沙普上面所说的。只需沿着历史传递数据,而不是试图使其进入状态。你应该能把它弄出来。