Reactjs 使用Redux React钩子中的useMappedState,API响应后不会重新呈现组件
Reactjs 使用Redux React钩子中的useMappedState,API响应后不会重新呈现组件,reactjs,react-hooks,redux-react-hook,Reactjs,React Hooks,Redux React Hook,useMappedState在从Ajax响应接收更新时不会重新呈现组件 下面是我正在使用的组件。我已经记录了各个阶段的条目,并附上了一个新的单一渲染的屏幕截图 您可以安全地假设redux部分在reducer和action方面运行良好,从mapState内salerfdata的控制台条目中可以看到,在expanded from中的响应之前和之后 import React, { useCallback, useState, useEffect, memo } from 'react'; import
useMappedState
在从Ajax响应接收更新时不会重新呈现组件
下面是我正在使用的组件。我已经记录了各个阶段的条目,并附上了一个新的单一渲染的屏幕截图
您可以安全地假设redux部分在reducer和action方面运行良好,从mapState内salerfdata的控制台条目中可以看到,在expanded from中的响应之前和之后
import React, { useCallback, useState, useEffect, memo } from 'react';
import Grid from '@material-ui/core/Grid';
import Paper from '@material-ui/core/Paper';
import StackedChart from '../../../components/StackedChart/index';
import { useDispatch, useMappedState } from 'redux-react-hook';
import { Creators } from './actions';
const SalesPerformance = ( ) => {
const mapState = useCallback(
(state) => {
console.log('inside mapSate', state);
return { salesPerfData: state.salesPerfReducer.salesPerf }
},
[]
);
const { salesPerfData } = useMappedState(mapState);
console.log('after useMappedState', salesPerfData);
const dispatch = useDispatch();
useEffect(
() => {
dispatch(Creators.fetchSalesPerf({ filter: 'monthly', duration: 'last3' }))
},
[]
);
return (
<section>
<Paper className='mTB30'>
<Grid container>
<Grid item sm={12}>
<StackedChart config={salesPerfData} />
</Grid>
</Grid>
</Paper>
</section>
);
};
export default SalesPerformance;
import React,{useCallback,useState,useffect,memo}来自“React”;
从“@material ui/core/Grid”导入网格;
从“@material ui/core/Paper”导入纸张;
从“../../../components/StackedChart/index”导入StackedChart;
从'redux react hook'导入{useDispatch,useMappedState};
从“/actions”导入{Creators};
const SalesperPerformance=()=>{
const mapState=useCallback(
(州)=>{
console.log('insidemapsate',state);
返回{salerfdata:state.salerfreducer.salerf}
},
[]
);
const{saleerfdata}=useMappedState(mapState);
log('useMappedState'之后,salerfdata');
const dispatch=usedpatch();
使用效果(
() => {
分派(Creators.fetchsalesrf({filter:'monthly',duration:'last3'}))
},
[]
);
返回(
);
};
导出默认销售业绩;
此处的沙盒链接-在您的
mapState
功能中,您有:
return { salesPerfData: state.salesPerfReducer.salesPerf }
但它应该是:
return { salesPerfData: state.salesPerfReducer.salesPerfData }
salesrf数据而不是salesrf。由于salerf
未在salerfreducer
中定义,因此您的salerfdata
变量仍未定义
修复此错误会导致其他一些错误,我认为这些错误是由于下游代码尚未测试造成的。argghhh!我现在犯了愚蠢的错误。非常感谢。我删除了另一个问题。它对我有用。它解决了我在实际项目中想要什么的问题。我们将放弃沙箱链接。