react redux

    

App.js
import React, { Component } from 'react'; import store from './redux'; import Com from "./com" class App extends Component { constructor(props){ super(props); console.log(store); console.log(store.getState());//获取数据 this.save = this.save.bind(this); this.state = { message: "", inputValue: "" }; store.subscribe(this.handleStoreChange);//监听store中的state改变 } render() { return ( <div className="App"> <input value = {this.inputValue} onChange={this.inputChange} /> <button onClick={this.save}>存储state</button> <p>{this.state.message}</p> <Com /> </div> ); } save(){ const action = { type: "msg",//必须有 value: this.state.inputValue } store.dispatch(action);//改变redux/reducer.js的state } handleStoreChange = () => { this.setState((preState) => { const newState = JSON.parse(JSON.stringify(preState)); const storeData = store.getState(); console.log(storeData) newState.message = storeData.message; return newState; }); } inputChange = (e) => { const value = e.target.value; this.setState((preState) => { const newState = JSON.parse(JSON.stringify(preState)); newState.inputValue = value; return newState; }); } } export default App;
redux/index.js
import { createStore } from 'redux';
import reducer from './reducer.js';

export default createStore(reducer); 
redux/reducer.js
export default (state = {}, action) => {
	console.log(state,action);
	const newState = JSON.parse(JSON.stringify(state));
	if(action.type == "msg"){
		newState.message = action.value;
		return newState;
	}
	
	if(action.type == "msg-msg"){
		newState.message = action.value;
		return newState;
	}
	
	return newState;
}

  

  

  

posted @ 2019-05-09 14:04  Webwhl  阅读(153)  评论(0编辑  收藏  举报