react-redux1
安装react-redux
cnpm i react-redux
文件目录

定义store文件
1 index.js文件: 2 3 import { createStore } from 'redux'; 4 import reducer from './reducer'; 5 const store = createStore(reducer); 6 export default store; 7 8 reducer.js文件: 9 10 const defaultState = { 11 inputValue:'hello', 12 list:[] 13 } 14 export default (state=defaultState, action)=>{ 15 if(action.type === 'change_input_value'){ 16 const newState = JSON.parse(JSON.stringify(state)); 17 newState.inputValue = action.value; 18 return newState; 19 } 20 return state; 21 }
定义index.js组件渲染部分文件
1 import React from 'react'; 2 import ReactDOM from 'react-dom'; 3 import TodoList from './TodoList'; 4 import { Provider } from 'react-redux'; 5 import store from './store' 6 7 //定义一个APP组件,将store赋值给store, 8 //Provider可以让全局都可以获得store中的值 9 const App = ( 10 <Provider store={store}> 11 <TodoList /> 12 </Provider> 13 ) 14 15 ReactDOM.render(App, document.getElementById('root'));
定义TodoList组件文件
import React, {Component,Fragment} from 'react';
import {connect} from 'react-redux';
//this.props.inputValue通过组件传值形式来绑定方法
class TodoList extends Component{
render() {
return (
<Fragment>
<div>
<input type="text" value={this.props.inputValue}
onChange={this.props.handleInputValue}/>
<button>提交按钮</button>
</div>
<ul>
<li>列表一</li>
</ul>
</Fragment>
)
}
}
const mapStateToProps = (state) => {
return {
inputValue: state.inputValue
}
}
//mapStateToProps 定义连接规则
const mapDispatchToProps = (dispatch) => {
return {
handleInputValue: (e) => {
const action={
type:'change_input_value',
value:e.target.value
}
dispatch(action)
}
}
}
export default connect(mapStateToProps,mapDispatchToProps)(TodoList);
//connect,把组件和state做连接

浙公网安备 33010602011771号