【问题标题】:Pass a React constant to useEffect hook将 React 常量传递给 useEffect 挂钩
【发布时间】:2021-05-28 13:05:25
【问题描述】:

我需要将 GraphQL useQuery 的 const 中的数据传递给 hook,如下所示:

const { loading: loadingData, data: timeWindowsData } = useQuery(din_times_for_rep);


useEffect(() => {
    setStartTime(moment(timeWindowsData.din_times_for_rep[0].val).format(format));
  }, []);  

它一直说din_times_for_rep 是“未定义的”。我尝试了不同的方法来传递它,如下所示:

useEffect(() => {
    setStartTime(moment(timeWindowsData.din_times_for_rep[0].val).format(format));
  }, [din_times_for_rep]); 

等等,但没有运气。有什么建议吗?

更新。

声明为:

let din_times_for_rep = gql` {
        din_times_for_rep {
            id
            name
            val
                }
            }
        `;

【问题讨论】:

  • din_times_for_rep 是道具吗?您可以尝试在调用 useEffect 之前记录它以查看它的值吗?
  • 不,它不是道具,它被声明为(添加到问题部分)。我可以在组件的另一部分记录 timeWindowsData.din_times_for_rep[0].val。

标签: reactjs


【解决方案1】:

在查询完成之前不会填充timeWindowsData。您能否尝试在 useEffect 调用中添加一个守卫,看看是否有帮助?

useEffect(() => {
  if (!loadingData) {
    setStartTime(moment(timeWindowsData.din_times_for_rep[0].val).format(format));
  }
}, [timeWindowsData, loadingData]); 

【讨论】:

猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 2021-05-30
  • 2021-12-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 2022-01-25
  • 2020-01-31
相关资源
最近更新 更多