首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux编辑待办事项

Redux编辑待办事项
EN

Stack Overflow用户
提问于 2018-09-19 08:48:40
回答 1查看 1.4K关注 0票数 0

我正在学习Redux。

有人能一步一步地解释如何在这个例子中添加编辑功能吗:https://codepen.io/anon/pen/bxQOaw?editors=0010

我已经添加了action和reducer,但不确定如何在无状态组件上传递它。

操作:

代码语言:javascript
复制
export const editTodo = (text) => {
    const action = {
      type: 'EDIT_TODO'
    }
    console.log('action in editTodo', action);
    return action;
}

减速机:

代码语言:javascript
复制
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;   } }

我是否需要将这些无状态组件转换为类?

EN

回答 1

Stack Overflow用户

发布于 2018-09-19 10:24:55

您应该使用combineReducers将所有的redux reducer收集成一个巨大的redux reducer

代码语言:javascript
复制
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。

代码语言:javascript
复制
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的组件中使用它们。

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52396436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档