关于react的一些思考

所有的数据全部先要发送给容器,然后容器负责接受数据单后再分发数据给他下面的组件,通过props来传递,一个页面就可以相当于一个容器,容器之中就会有很多子组件,一般组件只负责接受容器的数据的渲染,容器来处理组件的状态

开始redux

redux主要是三个部分组成

  • Action 在这里定义一些操作和操作需要的数据交流
  • Reducer 这里需要定义数据,也就是state然后要根据不同action做出不同的操作
  • Store 这个主要就是起到链接作用的

然后主要的数据流向是

在你的界面上发生事件然后传递到容器上,

容器负责链接上Action

然后Action把请求通过store找到reducers

在reducers上对数据进行处理

然后数据改变后reducers通过store找到绑定容器

在容器上对数据进行绑定

然后就可以在界面上显示出来了

Store

就一句话来链接容器和reducers

同时加上Provider组件

let store = createStore(testAPP);

ReactDOM.render((
<Provider store={store}>
<App/>
</Provider>
), document.getElementById('root'));
registerServiceWorker();

Action

类似于这种

每个action有一个type,然后后面是对应的交互的数据

export const addData = addDelta => {
return {
type: 'ADD_DATA',
addDelta//添加量
}
};

Reducer

在里面要定义state

然后写一个switch循环来判断不同的Action给出不同的操作

const initialState = {
data : 0
} const test = (state = initialState, action)=>{
switch (action.type) {
case 'ADD_DATA':
console.log(state);
return {
data : state.data + action.addDelta
}
case 'SUBTRACT_DATA':
return {
data : state.data + action.addDelta
}
default:
return state;
}
}; export default test;

在容器中展示和触发

你在容器中使用redux的话需要绑定一下

export default connect(mapStateToProps,mapDispatchToProps)(Test)

mapStateToProps函数是绑定state里面的数据

mapDispatchToProps就是绑定一些方法方便触发

在组件中就直接通过props获取到

const mapStateToProps = state => ({
data: state
})
const mapDispatchToProps = dispatch => ({
test: id => dispatch(addData(id))
})
class Test2 extends Component {
render() {
const {data} = this.props;
return (
<div className="App">
<p className="App-intro">
<li><Link to='/test'>to test</Link></li>
this is test2------<span>{JSON.stringify(data)}</span>
<li><Link to='/'>to app</Link></li>
</p>
</div>
) }
}

最新文章

  1. NPM如何更新到最新版
  2. linux c 多线程编程
  3. 3.1决策树理论--python深度机器学习
  4. POJ2406 KMP算法
  5. javascript原生ajax;
  6. Fizz-Buzz-Whizz
  7. 【BZOJ1146】网络管理(主席树,树状数组)
  8. Linux下常用的配置
  9. 从壹开始微服务 [ DDD ] 之十 ║领域驱动【实战篇&#183;中】:命令总线Bus分发(一)
  10. Android BroadcastReceiver 接收收到短信的广播
  11. 报错:[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop&#39;s value. Prop bei
  12. sql习题及答案
  13. Confluence 6 从外部小工具中注册访问
  14. 洛谷 P2256 一中校运会之百米跑
  15. Fiddler 手机抓包介绍
  16. layui 页面加载 阴影 请求页面加载转圈页面
  17. _RecordsetPtr使用方法
  18. C++显式转换
  19. Java类与类之间的继承关系
  20. cifar数据集介绍及到图像转换的实现

热门文章

  1. 第十届山东省赛L题Median(floyd传递闭包)+ poj1975 (昨晚的课程总结错了,什么就出度出度,那应该是叫讨论一个元素与其余的关系)
  2. 图论--LCA--Tarjan(离线)
  3. MySQL升级-CentOS6.8
  4. SpringBoot返回JSON日期格式问题
  5. Java笔记(day20-22)
  6. Java——一文读懂Spring MVC执行流程
  7. dp 20190617
  8. spring内嵌jetty容器,实现main方法启动web项目
  9. linux解压缩tar.gz文件
  10. [hdu5375 Gray code]DP