javascript - 初学Redux的一些疑问
大家讲道理
大家讲道理 2017-05-19 10:33:34
[JavaScript讨论组]

看了许多资料对Redux还是不是很理解
1.对于全局的State,也就是Store所管理的,初始是在哪里生成的? 之后又是怎么添加进去的?添加之后是不是都在同一个{}中得保证所有属性不重名

2.在Redux模式下,是不是每一个组件(需要state的组件)需要用
connect( mapStateToProps ,mapDispatchToProps )(Component);进行绑定?

3.一个Action是不是所有Reducer都会收到?

然后就是自己在懵逼状态下写的一点代码跑不起来 也没有错误提示:

import React from "react";
import ReactDOM from "react-dom";
import {createStore,bindActionCreators,combineReducers} from "redux";

import {Provider,connect} from "react-redux";

class Counter extends React.Component {
    render() {
        let { value1, onIncreaseClick, onDecreaseClick, value2, onDoubleClick, onResetClick } = this.props;
        return (
            

{value1}

{value2}

) } } function mapStateToProps(state) { return { //obj value1:state.count, value2:state.count } } function mapDispatchToProps(dispatch) { return { //obj onIncreaseClick(){ dispatch({type:"increase"}); }, onDecreaseClick(){ dispatch({type:"decrease"}); }, onDoubleClick(){ dispatch({type:"double"}); }, onResetClick(){ dispatch({type:"reset"}); } } } function counter1(state = { count: 0 }, action) { let count = state.count; switch (action.type) { case 'increase': return { count: count + 1 }; case 'decrease': return { count: count-1 }; default: return state; } } function counter2(state = { count: 0 }, action) { let count = state.count; switch (action.type) { case 'double': return { count: count*2 }; case 'reset': return { count: 0 }; default: return state; } } let rootReducer = combineReducers({ counter1, counter2 }); let store = createStore(rootReducer); let CounterCompo = connect( mapStateToProps, mapDispatchToProps )(Counter); ReactDOM.render( ,document.getElementById('container'));
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(5)
迷茫

找到问题了。。。。combineReducers的坑 用了之后State被划分到各自的Reducer去了

阿神

其实redux很简单,一个action代表发生改变的动作,对应的reducer代表对应action的效果。
使用redux就是一句话:哪个组件发生数据改变就在对应组件中dispatch(action),哪个组件需要使用store中的数据就传入需要的mapStateToProps参数到connect,两个相互独立。

天蓬老师

1、其实准确来说Reducer就是定义store的地方。可以把每个Reducer分开来,然后最后用combineReducers组合在一起。
2、推荐只是高层级的组件进行绑定,后然低层级的通过高层级进行交互。
3、都可以收到。

建议从官方的Demo进行起步。

PHPz

http://huziketang.com/books/r...

阿神

看了许多资料对Redux还是不是很理解1.对于全局的State,也就是Store所管理的,初始是在哪里生成的? 之后又是怎么添加进去的?添加之后是不是都在同一个{}中得保证所有属性不重名
答:初始数据在createStore的第二个参数就可以配置,reducer会返回一个新的state到store,没有明白你的属性重名是什么意思

2.在Redux模式下,是不是每一个组件(需要state的组件)需要用
connect( mapStateToProps ,mapDispatchToProps )(Component);进行绑定?
不一定的

3.一个Action是不是所有Reducer都会收到?
每一个action都会触发对应的reducer

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号