react-redux基本使用

Posted усил

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react-redux基本使用相关的知识,希望对你有一定的参考价值。

创建 store

import  createStore  from 'redux';
const defaultState = 
    language: 'zh',
    languageList: [
         name: '中文', code: 'zh' ,
         name: '英文', code: 'en' 
    ]


const reducer = (state = defaultState, action) => 
    switch (action.type) 
        case "change_labguage":
            return  ...state, language: action.payload ;
        default:
            return state
    


const store = createStore(reducer);
export default store;

入口文件导入 store

import store from 'redux/index';
import ReactDOM from 'react-dom';
import  Provider  from 'react-redux'
ReactDOM.render(
    <Provider  store=store>
        <App />
    </Provider>,
    document.getElementById('root')
)

在类组件中使用

import  connect  from 'react-redux';
// 将 store 中的数据注入到 props 
const mapStateTopProps = (state) => 
    return 
        language: state.language,
        languageList: state.languageList
    

// 将 dispatch 导入到 props
const mapDispatchToProps = (dispatch) 
    return 
        changeLanguage: (code) => 
            const action = 
                type: "change_language",
                payload: code
            
            dispatch(action);
        
    


class HeaderComponent extends React.Component 

    menuClickHander = (e) => 
        this.props.changeLanguage(e.key);
    

    render() 
        return (
            <div className="header">
                <Dropdown.Button
                    overlay=
                        <Menu onClick=() => this.menuClickHander items=this.props.languageList.map(l =>  return  key: l.code, label: l.name  ) />
                    >this.props.language === 'zh' ? '中文' : 'English'</Dropdown.Button>
            </div>
        )
    

export const HeaderClass = connect(mapStateTopProps, mapDispatchToProps)(HeaderComponent);

在函数组件中使用

import  useSelector, useDispatch  from 'react-redux';
const HeaderFC = () => 
    // 获取 store 数据
    const language = useSelector(state => state.language);
    const languageList = useSelector(state => state.languageList);

    const dispatch = useDispatch();

    const menuClickHander = (e) => 
        const action = 
            type: 'change_labguage',
            payload: e.key
        
        dispatch(action);
    

    return (
        <div className="header">
            <Dropdown.Button
                overlay= <Menu 
                            onClick=() => this.menuClickHander 
                            items=languageList.map(l =>  return  key: l.code, label: l.name  ) />
                >language === 'zh' ? '中文' : 'English'
                </Dropdown.Button>
        </div>
    )

 export default HeaderFC;

以上是关于react-redux基本使用的主要内容,如果未能解决你的问题,请参考以下文章

React入门之Redux:react-redux基本使用

React入门之Redux:react-redux基本使用

React 入门学习(十五)-- React-Redux 基本使用

React 入门学习(十五)-- React-Redux 基本使用

React 入门学习(十五)-- React-Redux 基本使用

redux和React-Redux的基本使用