React-redux入门

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
}

在这里插入图片描述

如有问题,欢迎留言

猜你喜欢

转载自blog.csdn.net/weixin_44420276/article/details/86310928