您的位置:首页 > Web前端 > React

React-redux入门

2019-01-11 18:11 477 查看

react-redux

以一个输入框为例,读取store中的值并修改。前提是有redux的基础(我之前写过),所以有些地方不复述了。

安装
npm install react-redux -S

入口index.js文件

import React from 'react';
import ReactDOM from 'react-dom';
import Text from './Text';
import * as serviceWorker from './serviceWorker';
import { Provider} from 'react-redux'
import store from './reactRedux/index'
const App = (
// Provider组件,与stores数据关联,让Provider的内部组件都可以获取store里面的数据
<Provider store={store}>
<Text />
</Provider>
)
ReactDOM.render(App, document.getElementById('root'));
serviceWorker.unregister();

Text.js

import React, { Component } from 'react'
import {connect} from 'react-redux'
class Text extends Component {
render() {
return (
<div>
<div>
<input type="text" value={this.props.inputValue} onChange={this.props.inputChangeValue}/>
<button>提交</button>
</div>
</div>

)
}
}
// 赋值 state形参 取store
// state.inputValue映射到组件中props中,取值 this.props.inputValue
const mapStateToProps = (state)=>{
return{
inputValue:state.inputValue
}
}
// store.dispatch   方法挂在到props上 this.props.inputChangeValue
const mapDispatchToProps=(dispatch)=>{
return{
inputChangeValue(e){
const action ={
type:"change_inputValue",
value:e.target.value
}
console.log(e.target.value);
dispatch(action)
}
}
}
// connect 让组件和store连接 两个规则 1.数据的读取 2.数据改变 action
// 无需订阅
export default connect(mapStateToProps,mapDispatchToProps)(Text)

store设置文件

index.js

import { createStore} from 'redux'
import reducer from './reducer'
const store = createStore(reducer)

export default store

reducer.js

const defaultState = {
inputValue:"hello world",
list:[]
};
export default (state = defaultState,action)=>{
if(action.type==='change_inputValue'){
const newState=JSON.parse(JSON.stringify(state))
newState.inputValue= action.value;
return newState
}

return state
}

如有问题,欢迎留言

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: