react七——react-redux

react-redux

咱们知道redux是:store中维护了一个state,当咱们view层dispatch了一个action,而后reducer根据这个action来更新state。
而react-redux呢,是react和redux的一个桥梁,也不是说没有他 react和redux不能使用,而是他作了一些封装,使得开发者可以更方便的使用redux
react-redux将组件分红两种:
一、容器组件(智能组件):容器组件负责作数据交互
二、UI组件(木偶组件):UI组件嵌套在容器组件里,只负责使用数据来显示数据

比起redux新增 两个模块
一、Provider 组件来对Router进行包裹,并传入store,这样在内部组件的其余组件均可以共享store的数据 而且对其进行更改javascript

在根组件中导入
     import {Provider} from 'react-redux'
     ...
     import store from './javascripts/redux/store'
     ReactDOM.render(
        <Provider store={store} >
            <Router history={hashHistory}>
                <Route path="/" component={App}>
                    <IndexRoute component={A}/>
                    <Route path="/a" component={A}></Route>
                    <Route path="/b" component={B}></Route>
                </Route>
            </Router>
        </Provider>
    ,document.getElementById("app"))

二、connect 是将store中的数据经过props来显示在view层,并封装一个函数来响应用户操做时dispatch的actionjava

import {connect} from 'react-redux'
import Actions from './redux/actionCreator'
...
 const mapStateToProps = (state) => {
  return {
    todos: getVisibleTodos(state.todos, state.visibilityFilter)
  }
}

const mapDispatchToProps = (
  dispatch,
  ownProps
) => {
  return {
    onClick: () => {
      dispatch({
        type: 'SET_VISIBILITY_FILTER',
        filter: ownProps.filter
      });
    }
  };
}

export default connect(mapStateToProps,mapDispatchToProps)(A)

view层: <div>{this.props. todos}</div>

解析: connect接受的两个参数react

  • mapStateToPropsredux

    是对store里的state和组件里的props对象造成映射关系,
    每当store中的state有所更新,就会自动执行,从新计算,从而从新render
    固然,他能够穿两个参数(state,ownProps) 这里若是容器组件里的ownprops改变,也会重新渲染
    eg: 
       // 容器组件的代码
           <FilterLink filter="SHOW_ALL">
             All
           </FilterLink>
       
       const mapStateToProps = (state, ownProps) => {
         return {
           active: ownProps.filter === state.visibilityFilter
         }
       }
    他能够接收state参数,并返回一个对象,这样你就能够在这里进行对数据的处理
    
    eg:
        const mapStateToProps = (state) => {
         return {
           todos: getVisibleTodos(state.todos, state.visibilityFilter)
         }
       }
  • mapDispatchToPropsapp

    这个函数或对象 是用来将用户的action传给store,他能够是一个函数,也能够是一个对象
       函数:
           const mapDispatchTopProps = (dispatch,ownProps) = > {
               return {
                   onClick: () => {
                       dispatch({
                           type: 'ADD_NUM',
                           filter:ownProps.filter
                       })
                   }
               }
           }
          这里,做为函数,他返回一个对象,对象里的键值对定义了ui组件的参数怎么发出action
      对象:
          const mapDispatchToProps = {
             onClick: (filter) => {
               type: 'ADD_NUM',
               filter: filter
             };
           }
           这里,是将上面的函数写成对象形式

    这一块就写到这里,若是有新的感悟会加进来....ide

相关文章
相关标签/搜索