redux
redux核心概念: store,state,action,reducer

首先通过reducer新建store,通过store.getState()获取状态
需要状态变更,store.dispatch(action) 来修改
reducer函数接受state和action,返回新的state,可以用store.subscribe监听每次的修改
import { createStore } from 'redux'
function reducer(state=10, action){
switch (action.type) {
case 'ADD':
return state + 1
case 'CUT':
return state - 1
default:
return 10
}
}
// 创建一个store createStore中传入的必须是一个函数
let store = createStore(reducer)
let init = store.getState()
console.log('一开始数据------', init)
function listener() {
let cur = store.getState()
console.log('cur------', cur)
}
// 订阅,每次state修改,都会执行listener
store.subscribe(listener)
//提交状态变更
store.dispatch({type: 'ADD'})
store.dispatch({type: 'ADD'})
store.dispatch({type: 'CUT'})
redux如何跟react一起使用
index.js中
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import { createStore } from 'redux' import {counter, add, cut} from './redux' const store = createStore(counter) function init (){ ReactDOM.render(<App store={store} add={add} cut={cut} />, document.getElementById('root') ); } init () store.subscribe(init)
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
render() {
let store = this.props.store
return (
<div className="App">
<h3>redux中默认的store.getState()的值为
<span>{store.getState()}</span>
</h3>
<button onClick={()=>{
store.dispatch(this.props.add())
}}>按钮 + 1</button>
<button onClick={()=>{
store.dispatch(this.props.cut())
}}>按钮 - 1</button>
</div>
);
}
}
export default App;

浙公网安备 33010602011771号