合并useQuery和useLazyQuery而不是写成两个

时间:2020-10-22 06:14:55

标签: reactjs graphql

我在页面加载时正在加载数据,而且当单击按钮时,我需要加载新项目。因此,第一次加载时我使用过useQuery,当用户单击按钮时,我使用过useLazyQuery来加载具有特定参数的新数据。

const { loading, error, data, networkStatus, refetch } = useQuery(
    GET_NEWS,
    {
      variables: {
        input: {
          query: state.Query, // default news 
        },
      },
    }
  );

  const [
    getNews,
    { loading: newsLoading, error: newsError, data: newsData },
  ] = useLazyQuery(GET_NEWS);


  const onButtonClick = async (searchParam) => {
    await getNews({
      variables: {
        input: {
          query: searchParam,
        },
      },
    });
  }

那么有没有一种更好的方法可以使用相同的查询而不使用useQuery呢? 还是我应该使用useLazyQuery并在useEffect挂钩上调用第一个查询,例如componentDidMount方式?

类似的东西

useEffect(() => {
     const data = async () => {
       await getNews({
        variables: {
         input: {
          query: state.Query,
        },
      },
    });
  }
 }, [])

感谢您的帮助,这是更好的方法。还是有其他方法可以实现这一目标。

0 个答案:

没有答案