React知识点整理-Redux(二)

169 阅读2分钟

Redux的使用

Redux除了和React一起用外,还支持其它界面库。所以我们可以单独对Redux进行使用,在熟悉Redux的使用后我们再结合React进行使用。

首先我们新建一个文件夹learn_redux,新建文件index.js。为了方便使用Redux我们使用指令yarn init创建package.json文件,在文件创建完成后通过yarn add redux引入Redux。文件目录如下图所示:

image.png

接下来我们在index.js文件中导入Redux,此时注意不建议通过ES6的方式导入,因为当前是node.js执行,受限于node部分版本无法识别ES6模块化;v13.2.0后开始支持识别。我们通过如下方式导入Redux:

image.png

然后我们可以开始使用Redux,完成如下简单demo的实现:

const redux = require('redux');

const inittalState = {
    counter: 0
}

// reducer
function reducer(state = inittalState, action) {
    switch (action.type) {
        case "INCREMENT":
            return { ...state, counter: state.counter + 1 }
        case "DECREMENT":
            return { ...state, counter: state.counter - 1 }
        case "ADD_NUMBER":
            return { ...state, counter: state.counter + action.num }
        case "SUB_NUMBER":
            return { ...state, counter: state.counter - action.num }
        default:
            return state;
    }
}

// store(创建时需要传入reducer)
const store = redux.createStore(reducer);

// 订阅store的修改
store.subscribe(() => {
    console.log("state发生了改变:",store.getState().counter)
})

// action
const action1 = { type: "INCREMENT" };
const action2 = { type: "DECREMENT" };
const action3 = { type: "ADD_NUMBER", num: 5 };
const action4 = { type: "SUB_NUMBER", num: 5 };

// 派发
store.dispatch(action1);
store.dispatch(action2);
store.dispatch(action3);
store.dispatch(action4);

运行代码我们可以看到counter值已经被修改:

image.png

代码逻辑如下图所示:

image.png 这时我们可以看到上述示例代码有些混乱不便于理解,我们可以将代码进行封装,如下图文件目录所示:

image.png 接下来我们在各个文件里对代码进行分装,如下图所示(这里我就没有贴代码,可以自己动手进行封装):

image.png

image.png

image.png

image.png

image.png 由此,我们就应该了解了Redux的使用流程,那么我们刻意更加清晰的了解redux在实际开发过程中的流程,下面我还是引用大神coderwhy的一张图:

image.png

Reract+Redux的使用

接下来我们可以在react中对Redux进行使用了。 可以试试独立完成如下demo的编写:

image.png

image.png 在下一篇我们会进阶使用redux。