UI组件:专门做渲染 TODOLISTUI
容器组件:处理逻辑 原先的未分离的那个文件
创建UI组件:
在src下创建TodolistUI.js
1、把所有UI相关代码移过去 注意引入 和输出export default
2、在之前的组件(父)中render()中的return中
传给UI组件逻辑函数
子组件中逻辑函数那块state改成props或者增加props
<TodoListUI
inputvalue={this.state.inputValue}
handleInputChange={this.handleInputChange}
/>
//在UI组件文件中:原先input中的函数改成
onChange={this.props.handleInputChange}
//之前函数中如this.handleItemDelete.bind(this,index)
//要在父组件中constructor下重新绑定 然后在return中传给子组件 同上
onclick={(index) =>{this.props.handleItemDelete(index)}}
组件中只有render函数时可以被变成无状态组件
(性能高)
一般是UI组件
即
const TodoListUI =(props) => {
return (
…………原return的代码)}
Redux中发送异步请求获取数据
1、写请求函数
2、在store的actionCreators中加入action
3、写reducer的if
//挂载到页面后执行
componentDidMount(){//.then若成功返回回调函数
axios.get('/list.json').then((res) => {
const data =res.data;
const action = initListAction( data );
store.dispatch(action);
})
//.catch失败时
}
actionCreators.js中
export const initListAction =(data) => ({
type:INIT_LIST_ACTION,//注意定义和引入
data
})