zoukankan      html  css  js  c++  java
  • react-redux-action

    Action 是把数据从应用(view等)传到 store 的有效载荷,store.dispatch() 将 action 传到 store。

    //尽量减少在 action 中传递的数据
    //action创建函数创建action

    const
    addTodo=(text)=>{ return { type:"ADD_TODO", id:todoId++, text } }

    单独的模块存放action

    import { ADD_TODO, REMOVE_TODO } from '../actionTypes'

    Redux 中只需把 action 创建函数的结果传给 dispatch() 方法即可发起一次 dispatch 过程。

    dispatch(addTodo(text))
    //或者创建一个 被绑定的 action 创建函数 来自动 dispatch:
    
    const boundAddTodo = text => dispatch(addTodo(text))
    boundAddTodo(text);
    //惟一使用 bindActionCreators(actionCreators, dispatch) 的场景是:
    把 action creator 往下传到一个组件上,却不想让这个组件觉察到 Redux 的存在,而且不希望把 Redux store 或 dispatch 传给它。
    
    //把 action creators 转成拥有同名 keys 的对象,再使用dispatch把每个 action creator 包起来可以直接调用。
    
    //TodoActionCreators.js:
    
    export function addTodo(text) {
      return {
        type: 'ADD_TODO',
        text
      };
    }
    
    export function removeTodo(id) {
      return {
        type: 'REMOVE_TODO',
        id
      };
    }

    //SomeComponent.js
    
    import { Component } from 'react';
    import { bindActionCreators } from 'redux';
    import { connect } from 'react-redux';
    
    import * as TodoActionCreators from './TodoActionCreators';
    
    class TodoListContainer extends Component {
      componentDidMount() {
        // 由 react-redux 注入:
        let { dispatch } = this.props;
        let action = TodoActionCreators.addTodo('Use Redux');
        dispatch(action);
      }
    
      render() {
        let { todos, dispatch } = this.props;
    
        // 这是应用 bindActionCreators 比较好的场景:
        // 在子组件里,可以完全不知道 Redux 的存在。
    
        let boundActionCreators = bindActionCreators(TodoActionCreators, dispatch);
    
        return (
          <TodoList todos={todos} {...boundActionCreators} />
        );
    
        // 或者
        //return <TodoList todos={todos} dispatch={dispatch} />;
      }
    }
    
    export default connect(
      state => ({ todos: state.todos })
    )(TodoListContainer)
  • 相关阅读:
    Microsoft Visual Studio 产品密钥
    ActiveReport 9手把手搭建环境及实战
    TFS 用户与组管理(转)
    FTS下载地址
    URLScan安装及配置(转)
    viewstate加密(转)
    .net 网站发布 Web.Config中的<compilation debug="true"/>
    WebDAV被启用(转)
    js字母大小写转换
    限制同一个用户在同一时间只能登陆一次(转)
  • 原文地址:https://www.cnblogs.com/avidya/p/8488798.html
Copyright © 2011-2022 走看看