javascript - React js 使用钩子 useState 无限循环渲染?
问题描述
我想通过使用自定义钩子来更新我的组件当前状态,但是当我更新它时会显示无限循环渲染。通过使用 useState() 钩子。我是反应钩子的新手。
import React, { useMemo, useState, useReducer, useEffect, useCallback } from 'react';
import getAllFaqs from './faqQuery.graphql';
import { useFaq } from '../../peregrine/talons/Faq/useFaq';
const Faq = props => {
const [state, setState] = useState({})
const talonProps = useFaq({
query: getAllFaqs
});
const { data, error, loading } = talonProps;
setState({data})
console.log("Thank data", state)
return (<div>its Working</div>);
};
解决方案
不要直接在功能组件中设置状态。使用 onCompleted 事件:
import React, { useMemo, useState, useReducer, useEffect, useCallback } from 'react';
import getAllFaqs from './faqQuery.graphql';
import { useFaq } from '../../peregrine/talons/Faq/useFaq';
const Faq = props => {
const [state, setState] = useState({})
const talonProps = useFaq({
query: getAllFaqs,
onCompleted: ({ data, error, loading }) => setState({data})
});
console.log("Thank data", state)
return (
<div>its Working</div>
);
};
推荐阅读
- reactjs - React JS 中的“ScrollView”之类的组件?
- reactjs - 在高阶组件中使用钩子
- api - 拆分 Symfony REST API 和后端
- c - 为什么尾递归函数会导致分段错误?
- c# - 在外部浏览器中打开链接,但不是默认设置
- sql - if a then b 签入 where 子句
- python - Python递归与for循环
- r - geom_rect 背景引入了缺失值,不会绘制彩色背景
- python - MemoryError:当 Pycharm 几乎没有显示任何内存使用时分配错误
- tfs - how to pull code review reports from TFSGIT