使用 useSelector 和 usedispatch 替代 connect

使用 useSelector 来获取 state,使用 usedispatch 的实例对象来发出 action

  1. const initToggle = { title: 'toggle标题', show: true }
  2. const toggle = (state = { ...initToggle }, action) => {
  3. switch (action.type) {
  4. case 'ON_SHOW':
  5. return { ...state, show: !state.show }
  6. case 'UPDATE_TITLE':
  7. return { ...state, title: action.payload }
  8. default:
  9. return state
  10. }
  11. }
  12. export default toggle
  1. const Dome2 = () => {
  2. const { show, title } = useSelector(({ toggle }) => ({
  3. show: toggle.show,
  4. title: toggle.title,
  5. }))
  6. const dispatch = useDispatch()
  7. return (
  8. <div>
  9. {show ? <div>{title}</div> : ''}
  10. <button onClick={() => dispatch({ type: 'ON_SHOW' })}>显示/隐藏</button>
  11. <button
  12. onClick={() => {
  13. dispatch({ type: 'UPDATE_TITLE', payload: '修改之后的title' })
  14. }}
  15. >
  16. 修改title
  17. </button>
  18. </div>
  19. )
  20. }