【问题标题】:React- Component not updating after change in prop render through useEffectReact-通过useEffect更改道具渲染后组件未更新
【发布时间】:2021-11-11 19:50:50
【问题描述】:
const [Paid, setPaid] = useState(false);

const fetchTransaction=async()=>{
      const data=await response.get();
  
      if (data.docs[0].data().status === "COMPLETED") {
          setPaid(true)
      }
        
  }

  useEffect(() => {
      fetchTransaction();
    }, [])

    useEffect(() => {
      RouterCourse = () => {
        return (
          <CourseRoute path="/course" component={Course} pay={Paid}/>
        )
      }
  }, [Paid]);
  var RouterCourse = () => {
    return (
      <CourseRoute path="/course" component={Course} pay={Paid}/>
    )
  }

return(
    <div>
        <Router>
            <Switch>
                {RouterCourse()}
            </Switch>
        </Router>
    </div>
)

所以在Routercourse函数内部,包含一个定制的PrivateRoute组件,是一个名为Paid的变量。这个变量是使用钩子定义的。通过异步函数 fetchTransaction(false 为 true)更改支付,但不使用新值(true)。如何更新返回的 {RouterCourse()} 中使用的值?

【问题讨论】:

    标签: reactjs async-await use-effect use-state


    【解决方案1】:

    我发现您可以定义另一个状态,最初是带有已付费 false 的组件,然后在 useEffect 中使用 setState https://i.stack.imgur.com/306pw.png 更改该组件,上传此图片可能会对您有所帮助,这与您的问题类似

    【讨论】:

    • 感谢您的回答,不幸的是,这对我不起作用。就像,当我单击指向路径 / course 的按钮时,它会重置页面,并且变量paid 会重置为 false。我真的不知道如何解决这个问题
    猜你喜欢
    • 2020-12-24
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2021-09-01
    • 2021-12-04
    相关资源
    最近更新 更多