Redux 订阅并更新 UI
Redux Subscribe and update to UI
我能够在单击按钮期间正确地控制台记录递增和递减结果。我正在尝试使用 myStore.getState() 更新 UI 但似乎不起作用。如何订阅和更新 UI?非常感谢并提前。
import React from 'react';
import './App.css';
import {createStore} from 'redux'
import counterReducer from './reducers'
import {increment,decrement} from './actions';
const myStore = createStore(counterReducer)
const handleIncrement = () => {
myStore.dispatch(increment(2))
console.log(myStore.getState())
}
const handleDecrement = () => {
myStore.dispatch(decrement(2))
console.log(myStore.getState())
}
function App() {
return (
<div className="App">
<h1>Counter {myStore.getState()}</h1>
<button onClick={handleIncrement}>+</button>
<button onClick={handleDecrement}>-</button>
</div>
);
}
export default App;
根据 react-redux 文档:
“useSelector() 也将订阅 Redux 商店,并且 运行 您的选择器每当一个动作被调度时”
所以每次你调度一个动作时,useSelector
钩子将 运行 和 return 一个新的 counter
值并使用新的 [=13] 重新渲染你的组件=].
您的 App
组件可能看起来像这样。
import React from 'react'
import { useSelector } from 'react-redux'
function App() {
const counter = useSelector(state => state.counter)
return (
<div className="App">
<h1>Counter {counter}</h1>
<button onClick={handleIncrement}>+</button>
<button onClick={handleDecrement}>-</button>
</div>
);
}
使用 Redux 订阅
function App() {
const [state, updateState] = React.useState({});
// subscribing to the redux store
store.subscribe(() => updateState(store.getState()))
return (
<div className="App">
<h1>Counter {state.counter}</h1>
<button onClick={handleIncrement}>+</button>
<button onClick={handleDecrement}>-</button>
</div>
);
}
我能够在单击按钮期间正确地控制台记录递增和递减结果。我正在尝试使用 myStore.getState() 更新 UI 但似乎不起作用。如何订阅和更新 UI?非常感谢并提前。
import React from 'react';
import './App.css';
import {createStore} from 'redux'
import counterReducer from './reducers'
import {increment,decrement} from './actions';
const myStore = createStore(counterReducer)
const handleIncrement = () => {
myStore.dispatch(increment(2))
console.log(myStore.getState())
}
const handleDecrement = () => {
myStore.dispatch(decrement(2))
console.log(myStore.getState())
}
function App() {
return (
<div className="App">
<h1>Counter {myStore.getState()}</h1>
<button onClick={handleIncrement}>+</button>
<button onClick={handleDecrement}>-</button>
</div>
);
}
export default App;
根据 react-redux 文档:
“useSelector() 也将订阅 Redux 商店,并且 运行 您的选择器每当一个动作被调度时”
所以每次你调度一个动作时,useSelector
钩子将 运行 和 return 一个新的 counter
值并使用新的 [=13] 重新渲染你的组件=].
您的 App
组件可能看起来像这样。
import React from 'react'
import { useSelector } from 'react-redux'
function App() {
const counter = useSelector(state => state.counter)
return (
<div className="App">
<h1>Counter {counter}</h1>
<button onClick={handleIncrement}>+</button>
<button onClick={handleDecrement}>-</button>
</div>
);
}
使用 Redux 订阅
function App() {
const [state, updateState] = React.useState({});
// subscribing to the redux store
store.subscribe(() => updateState(store.getState()))
return (
<div className="App">
<h1>Counter {state.counter}</h1>
<button onClick={handleIncrement}>+</button>
<button onClick={handleDecrement}>-</button>
</div>
);
}