• React-使用react-redux


      react-redux可以方便在react中使用redux,我们就可以忘记subscribe,只需要记住reducer,action和dispatch就可以了。react-redux提供Provider和connect两个接口。

    • Provider组件应该在应用最外层,传入store即可,只用一次。
    • Connect负责从外部获取组件需要的参数。
    • Connect可以用装饰器的方式来写。

    创建stroe的时候,把原本的<Todolist/>包裹在Provider里。

    import React from 'react';
    import ReactDOM from 'react-dom';
    import { Provider } from 'react-redux';
    import store from './store';
    import TodoList from './TodoList.js';
    //定义一个组件,就是一段jsx
    //Provider 链接了store,那么Provider里所有的组件,也都能获取到store里的内容
    const App = (
    	<Provider store={store}> 
    		<TodoList/>
    	</Provider>
    );
    ReactDOM.render(App, document.getElementById('root'));
    

    在组件里导出组件的时候换种写法,要用connect。理解为让TodoList与store做链接,逻辑规则在mapStateToProps和mapDispatchToProps里定,TodoList是个ui组件,导出的是个普通组件。

    mapStateToProps:mapStateToProps把store里的数据映射到组件里,变成组件的props。它接受一个state做参数,返回一个对象。

    mapDispatchToProps:把store.dispatch方法映射到props上,变成组件的props。它接受接受一个dispatch 做参数,返回一个对象

    import React  from 'react';
    import { connect } from 'react-redux';
    const TodoList=(props)=>{
      const { inputValue , changeInpuValue ,btnClick , list , itemDelete}=props;
        return(
          <div>
            <input type="text" value={inputValue} onChange={changeInpuValue}/>
            <button onClick={btnClick}>提交</button>
            <ul>
              {
                list.map((item,index)=>{
                  return <li key={index} onClick={itemDelete}>{item} </li>
                })
              }
            </ul>
          </div>
        );
    };
    /*mapStateToProps把store里的数据映射到组件里,变成组件的props,接受一个state做参数,返回一个对象*/
    const mapStateToProps=(state)=>{
      return{
        inputValue:state.inputValue,
        list:state.list
      }
    }
    /*store.dispatch方法挂载到props上,组件里的props如何对store做修改,接受一个dispatch 做参数,返回一个对象*/
    const mapDispatchToProps=(dispatch)=>{
      return{
        changeInpuValue(e){
          const action={
            type:'change_input_value',
            value:e.target.value
          }
          dispatch(action)
        },
        btnClick(){
          const action={
            type:'btn_click'
          }
          dispatch(action)
        },
        itemDelete(e){
          console.log(e);
        }
      }
    }
    /*让TodoListu与store做链接,规则在mapStateToProps里边*/
    export default connect(mapStateToProps,mapDispatchToProps)(TodoList);
    

      

  • 相关阅读:
    封装格式---FLV---文件格式解析
    高并发服务器---基础----IO模式和IO多路复用
    nginx---如何实现轻量级和高并发
    nginx---基础介绍
    H.264---SPS和PPS
    机器学习---算法---朴素贝叶斯
    机器学习---算法---Adaboost
    流媒体传输协议---STUN---基础
    H.264---指数哥伦布编码
    【linux】vim编辑器快捷键使用方法
  • 原文地址:https://www.cnblogs.com/superlizhao/p/9455682.html
Copyright © 2020-2023  润新知