上节课我们完成了最后一项优化,这节课我们开始介绍如何通redux
来完成数据共享。
回顾
在开始这节课的内容之前,我们来对上节课的内容来做一个简单那回顾
UI
组件和容器组件混在一个文件中来编写- 使用
Provider
组件来批量给容器组件传递store
react-redux
自动监测redux
的状态改变mapDispatchToProps
可以简写车给一个对象- 不再暴露
UI
组件
以上便是我们上节课的主要要点,接下来,我们来开始这节课的内容。
Person
组件
我们之前的案例中是不是只有一个组件啊?其实我们之前的案例中早就可以实现数据共享了,但是就只有一个组件怎么共享呢,那么我们就再加一个组件。
那么在我定义Preson
组件之前,我们是不是要创建两个文件?一个是person_action_creator.js
另一个是person_reducer.js
?因为Person
组件要和redux
打交道肯定要有自己的reducer
和自己的action creator
,那么我们把文件先建好。
但是还有一个问题,我们这么写到后来文件是不是就越来越乱啊?那么我们来建两个文件夹叫actions
和reducers
,然后我们把这些文件放进去,而且也就不需要加后缀了,我们就叫person.js
。
然后我们定义组件,先定义一个UI
组件,我们来看一下效果:
我们的Person
组件是不是就可以成功渲染了?那么我们来定义容器组件能够让Person
组件拿到redux
中的值。
需求
现在嫩我们来做一个需求,我们要在Person
组件中输入相关信息,然后点击按钮,就让Sum
组件来展示Person
信息,然后我们在Sum
组件中点击这些按钮,就让Person
组件来展示Sum
中的求和之后的和。那么我们怎么处理?是不是要把Person
的数据和Sum
的数据都放在redux
里面啊?
定义Person
组件
我们知道我们的具体需求了之后,那么我们先来把Person
的基础功能先完成:
export default class Person extends Component { render() { return ( <div> <input ref={c=>this.name=c} type="text" placeholder="input name" /> <input ref={c=>this.age=c} type="text" placeholder="input age" /> <button onClick={this.addPerson}>submit</button> <h2>当前求和为:???</h2> </div> ) } addPerson = ()=>{ const name = this.name.value; const age = this.age.value; console.log(name,age); } }
我们来看一下,这是最基本的组件页面元素,我们看一下我们的onClick
事件的回调,我们通过ref
获取了输入的值,然后打印出来,因为我们还没有定义操作redux
的相关内容。那么就看能不能实现打印
我们现在是可以打印出来的。接下来我们再添加交互是不是就可以了。
总结
本节为准备工作,没有什么重要知识点。
Copyright statement:The articles of this site are all original if there is no special explanation, indicate the source please when you reprint.
Link of this article:https://work.lynchow.com/article/share_data_person_component/