【发布时间】:2021-05-30 20:51:06
【问题描述】:
我有一个组件App(),它需要一些道具,称为data。 App 组件通过useReducer 管理其状态。根据减速器的状态,我会显示/隐藏 data 道具中的某些数据。我的减速器还根据data 中的内容计算新状态。所以举个例子,要得到一个新的id,我的reducer需要通过data找到下一个id。
const App = ({ data }) => {
//...
const reducer =
(state, action) => {
switch (action.type) {
case 'NEXT_TAB': {
let nextTabIndex = state.activeTab + 1;
let nextId = data.tabs[nextTabIndex].id; //<==== Worried about this line here, accessing data prop
return {
...state,
state.activeTabId: nextId
};
}
default:
return state;
}
}
//....
const [myState, dispatch] = useReducer(reducer, state);
//....
当我在这里实现它时,我的App 组件接收data 作为props。
在我的减速器中,我访问了这些道具:
let nextId = data.tabs[nextTabIndex].id
我的问题是这是否违背了减速器使用和利用收到的道具的想法?或者,每次我调用一个动作时,我都可以将 data 道具传递给我的减速器。但是,我担心这会使一切变得更慢和不必要的复杂?
【问题讨论】:
标签: javascript reactjs react-hooks reducers use-reducer