Reactjs 在react redux和saga中完成分派后获取状态变量?
你好,我对React、Redux和Saga都是新手。所以我有一个场景,我有一个.jsx文件,它是视图文件,然后是一个用于分派的操作文件,我还使用了saga,它更新了reducer中的数据。以下是文件结构:Reactjs 在react redux和saga中完成分派后获取状态变量?,reactjs,react-redux,redux-saga,redux-reducers,Reactjs,React Redux,Redux Saga,Redux Reducers,你好,我对React、Redux和Saga都是新手。所以我有一个场景,我有一个.jsx文件,它是视图文件,然后是一个用于分派的操作文件,我还使用了saga,它更新了reducer中的数据。以下是文件结构: 操作文件: 减速器锉 传奇档案 jsx文件 现在,我需要在dispatch完成数据更新后访问数据的更新状态,因为在数据更新后,我必须设置dummy来设置前面提到的虚拟变量。我可以用任何方法来实现这一点。我尝试过使用dispatch.then,但在UI上,它说。then不是用于dispatch的
useffect
允许您对给定道具进行更改
const [dummy, setDummy] = useState([]);
const data = useSelector(state => state.data, shallowEqual) || {};
// setDummy when `data` changes
useEffect(() => {
setDummy(data);
}, [data])
您正在调度
GET\u操作
,但没有在reducer中处理它,因此该操作不会导致状态更改。实际上,该操作拼写错误。该案例是针对GET\u操作的。
export const Reducer = (currentState = {}, action) => {
const newState = { ...currentState };
switch (action.type) {
case GET_ACTION:
newState.data = action.data;
return newState;
}
};
function* getData(action) {
const { requestor } = action.data;
try {
const data = yield call(callService);
if(success) {
yield put( {type: GET_ACTION, data} );
}
} catch (e)
{
}
}
function* getDataSaga() {
yield takeLatest(GET_ACTION, getData);
}
export {
getData,
};
export default [
getDataSaga,
];
const [dummy, setDummy] = useState([]);
const data = useSelector(state => state.data, shallowEqual) || {};
There is a function in which dispatch function is called.
dispatch(getAction(requestor));
const [dummy, setDummy] = useState([]);
const data = useSelector(state => state.data, shallowEqual) || {};
// setDummy when `data` changes
useEffect(() => {
setDummy(data);
}, [data])