我正在学习Redux。
有人能一步一步地解释如何在这个例子中添加编辑功能吗:https://codepen.io/anon/pen/bxQOaw?editors=0010
我已经添加了action和reducer,但不确定如何在无状态组件上传递它。
操作:
export const editTodo = (text) => {
const action = {
type: 'EDIT_TODO'
}
console.log('action in editTodo', action);
return action;
}减速机:
const todo = (state, action) => { switch (action.type) {
case 'EDIT_TODO':
if (state.id !== action.id) {
return state;
}
return {
...state,
text: action.text
};
default:
return state; } }; const todos = (state = [], action) => { switch (action.type) {
case 'EDIT_TODO':
return state.map(t =>
todo(t, action)
);
default:
return state; } }我是否需要将这些无状态组件转换为类?
发布于 2018-09-19 10:24:55
您应该使用combineReducers将所有的redux reducer收集成一个巨大的redux reducer
import ToDoReducer from './todo-reducer.js';
import OtherReducer from './other-reducer.js';
import {combineReducers} from 'redux';
const allReducers = combineReducers({
ToDo:ToDoReducer,
OtherR:OtherReducer,
});
export default allReducers;然后在根文件中,通过react-rudux提供程序应用组合的redux reducer。
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
const store = createStore(allReducers, applyMiddleware(thunk));
class App extends React.Component{
render(){
return(
<Provider store={store}>
<YourSecondaryMainComponent />
</Provider>
)
}
.... 然后,您可以在具有connect和bindActionCreators的组件中使用它们。
import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import editTodo from './todoFunctions.js';
class myComponent extends React.Component{
...
}
let mapStateToProps = (state)=>{return {ToDo:state.ToDo}; };
let matchDispatchToProps = (dispatch)=>{ return bindActionCreators({ editTodo }, dispatch); }
export default connect(mapStateToProps,matchDispatchToProps)(myComponent);https://stackoverflow.com/questions/52396436
复制相似问题