React-Redux将数据转换为道具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React-Redux将数据转换为道具相关的知识,希望对你有一定的参考价值。
我正在实现一个任务应用程序,我有两个视图来渲染Tasks
和Items
,另一个我根据任务状态渲染多个列表作为看板。
我的减速机:
export const rootReducer = Redux.combineReducers({
Tasks: TasksReducer,
itemsAreLoading: itemsAreLoadingReducer
});
const TasksReducer = (state , action ) => {
if (typeof state == "undefined") {
console.log('state undefined');
return null;
}
switch (action.type) {
case TasksTypes.Tasks_GET:
return action.Tasks;
default:
console.log(state);
return state;
}
}
export class TasksApp extends React.Component {
constructor(props) {
super(props);
}
render() {
const {tasks} = this.props;
return (<div>
<ItemsView Tasks={tasks}/>
<BoardView Lanes=[/* tasks tranfromed into mutliple list based on their status*/]/>
</div>);
}
}
const mapStateToProps = (state) => {
return {
tasks: state.Tasks
};
};
我的问题是将第二个视图的数据转换为具有不同数据表示的位置。
答案
这里的主要问题是你不要在你的课堂上开除任何动作,我也没有看到任何动作。首先,你必须触发一个动作,然后用类型和有效载荷调度它,其次,正如David Tyron写的那样,语法在这一行中有点偏离:
const { tasks } = this.props;
最后一个小注释,你可以在mapStateToProps函数中做一些破坏:
const mapStateToProps = ({ Tasks }) => {
return { Tasks };
};
然后像const { Tasks } = this.props;
那样得到它
我认为,改变你的任务道具的最佳做法是触发另一个动作,从你的任务道具创建一个新的道具,如:
export const transformData = tasks => {
return dispatch => {
//Do the transformations here
dispatch {
type: TRANSFORM_DATA,
payload: transformed_tasks
}
}
}
然后用减速机捕捉它。
而恕我直言,这个行动的最佳地方是componentDidMount()
以上是关于React-Redux将数据转换为道具的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 React-Router 和 React-Redux 将道具发送到子路由组件?
如何在 react-redux 中正确键入映射到道具的动作创建者
Typescript 无状态 HOC react-redux 注入道具打字
是否可以在 React-Redux 应用程序中使用 Immutable.js 来比较 shouldComponentUpdate 中的道具?