Javascript
至于动作和“类型”参数,其他答案都是正确的。这就是Redux的设计方法,旨在为调试目的提供序列化的好处。他讲述了如何比较动作创建者和还原者。动作创造者!=行动。动作是数组的一项(动作堆栈)。该数组将用于减少状态。非常有用,谢谢。我看到了解耦操作和状态更改的基本原理。我不禁想知道,你提到的约简的组合性是否不能通过函数组合来实现,尽管这个问题似乎与动作是否应该以数据的形式显式表示是正交的。“不仅仅是函数调用,而是调度对象。”但函数也是对象。。。正如我所理解的那个样,这个问题是关于具有特定格式的文字对象的好处,而不是函数。在阅读其他答案后,在我的答案中添加了一些注释。不知道它对TypeScript是否有帮助(可能是您需要提供一些代码示例来显示确切的问题)。Javascript ,javascript,typescript,redux,Javascript,Typescript,Redux,至于动作和“类型”参数,其他答案都是正确的。这就是Redux的设计方法,旨在为调试目的提供序列化的好处。他讲述了如何比较动作创建者和还原者。动作创造者!=行动。动作是数组的一项(动作堆栈)。该数组将用于减少状态。非常有用,谢谢。我看到了解耦操作和状态更改的基本原理。我不禁想知道,你提到的约简的组合性是否不能通过函数组合来实现,尽管这个问题似乎与动作是否应该以数据的形式显式表示是正交的。“不仅仅是函数调用,而是调度对象。”但函数也是对象。。。正如我所理解的那个样,这个问题是关于具有特定格式的文字对
function addTodo(filter) {
return {
type: SET_VISIBILITY_FILTER,
filter
}
}
function todoApp(state = initialState, action) {
switch (action.type) {
case SET_VISIBILITY_FILTER:
return Object.assign({}, state, {
visibilityFilter: action.filter
});
}
}
store.dispatch(addTodo("Ask question on stackoverflow"));
// Action/reducer. (Parametrised state transformer, really.)
const addTodo = text => state => {
return Object.assign({}, state, {
visibilityFilter: action.filter
});
}
// Dispatch takes as a argument the action/reducer
store.dispatch(addTodo("Ask question on stackoverflow"));
import reducer from './reducer';
const actions = [
{type: 'INIT'},
{type: 'SOME_ACTION', params: {...}},
{type: 'RECEIVE_DATA', data: [...]},
{type: 'SOME_ANOTHER_ACTION', params: {...}},
{type: 'RECEIVE_DATA', data: [...]},
...
];
const finalState = actions.reduce(reducer, undefined);
function reducer(state, action) {
return action(state);
}
function someActionCreator() {
return {
type: "ADD_TODO",
text: "Ask question on stackoverflow"
}; // returns object
}
function someActionCreator() {
return addTodo("Ask question on stackoverflow"); // returns function
}