【发布时间】:2020-08-26 17:51:04
【问题描述】:
我正在尝试根据从下拉列表中选择并从后端获取的值更新状态,但它陷入循环并达到最大深度。
export function something(){
const [getState, setState] = useMergeState({
isValue: false,
initialState: {
a: '',
b: '',
c: '',
d: ''
}
})
const fetchData = () => {
apiCall().then(res => {
if(res.status === 200){
setState({
initialState: {
...initialState,
d:response.data
}
})
}
})
}
useEffect(() => {
if(getState.isValue) fetchData()
})
const renderView = (props) => {
let {values} = props;
values.something === 'xyz' && setState({isValue: true})
return(
<Dropdown>
<Dropdown>
)}
return(
<Formik initialValue={getState.initialState} render={renderView}/>
)}
在这段代码中,我试图根据选择的输入设置状态,如果输入selected === 'xyz',那么它将 setState 为真,如果 isValue 的值为真,那么它将点击 api 获取一些数据并将其存储在状态中。问题是一旦我尝试在 renderView 中设置状态,它就会陷入无限循环。我无法在其他任何地方获得选择的值。
谢谢
【问题讨论】:
-
你将
isValue设置为true,当你再次设置为false时?