# Redux - 02
怎么说呢,通过action提交改变state会导致页面充斥着很多长得相同的代码。稍作优化,将其拆分。后期可以考虑将其封装。
# action的拆分
actionCreators.js.js
//actionCreators.js
export const changInputAction = (value) => {
type: '',
value
}
疑问,一个对象怎么拆分出来变成一个函数了 立即执行?
没有找到文档但是根据实战,如果有入参,他一定是函数的形式,没有入参,则随意了。写成一样的也统一。
# 基础完结
基础结束,需要注意几点:
- store必须是唯一
- 只有store只能改变自己内容,reducer不能改变
newState的由来
- reducer必须是纯函数(返回值必须是由入参进行控制
禁止返回固定值,在reducer里面进行ajax进行请求
# UI组件拆分
把render里面的内容额外找个页面进行编写。通过父子组件传值,将方法函数进行传递。
将ui与业务逻辑完全独立,加快速度。
//listUi.js
class TodoListUi extends Component {
render () {
return (
<div style={{margin: '10px'}}>
<div className='container'>
<Input
style={{width: '300px'}}
value={this.props.inputValue}
onChange={(e) => this.props.change(e)}
/>
<Button
type='primary'
onClick={() => this.props.add()}>新增</Button>
</div>
<div style={{marginTop:'10px', width: '300px'}}>
<List
bordered
dataSource={this.props.list}
renderItem={(item, index) => (
<List.Item onClick={() => this.props.removeItem(index)}>{item}</List.Item>
)}
/>
</div>
</div>
)
}
}
<!--list.js-->
<TodoListUi
inputValue={this.state.inputValue}
list={this.state.list}
change={this.change}
add={this.add}
removeItem={this.removeItem}
/>
# 无状态组件
取消使用类的模块创建组件,使用函数的形式创建组件。
- 不需要引入React重的Component模块
- 传递props,去掉this
const listUi = (props) => {}
据说是可以提升性能。
# ajax & redux
没啥好说的
componentDidMount () {
axios.post('http://192.168.31.228:1234/user/findAll').then(res => {
const action = getListAction(res.data.data)
store.dispatch(action)
})
}
← Redux - 01 Redux - 03 →