【发布时间】:2021-07-22 15:59:00
【问题描述】:
我正在使用 useEffect 在组件挂载时更改状态变量。我正在使用 redux 进行状态管理。我面临的问题是多次调用使用效果。
React.useEffect(() => {
dispatch(getSingleCoin(id))
setName(coinDetail?.name)
setSymbol(coinDetail?.symbol)
setLogourl(coinDetail?.logo)
setPrice(coinDetail?.price)
setLaunchDate(coinDetail?.launchDate)
setWebsiteUrl(coinDetail?.websiteUrl)
setNetwork(coinDetail?.chain)
setAddress(coinDetail?.address)
setTwitterUrl(coinDetail?.twitter)
setTelegramUrl(coinDetail?.telegram)
setRedditUrl(coinDetail?.reddit)
setYoutubeUrl(coinDetail?.youtube)
setCoinDescription(coinDetail?.description)
setMarketCap(coinDetail?.marketCap)
}, [coinDetail,dispatch, id, approveSuccess, disapproveSuccess])
我的改变状态变量的 useEffect 钩子。
export const coinDetailReducer = (state = { loading: true }, action) => {
switch (action.type) {
case COIN_DETAIL_REQUEST:
return { loading: true }
case COIN_DETAIL_SUCCESS:
return { loading: false, coinDetail: action.payload.coin }
case COIN_DETAIL_FAIL:
return { loading: false, error: action.payload }
case COIN_DETAIL_RESET:
return {}
default:
return state
}
}
我的 reducer 处理分派的动作。
【问题讨论】:
-
这很可能是因为您的请求为
coinDetail设置了一个新值,它再次触发了钩子。