如何使用参数调用 redux 操作并从 reducer 进行访问?
How call a redux action with an argument and access from the reducer?
如何从我的组件的渲染函数中使用 value 参数调用 setCounter 操作?
如何在 reducer 中访问操作的参数?
// File: app/actions/counterActions.js
export function setCounter(value) {
return {
type: types.SETCOUNTER,
value
};
}
export function increment() {
return {
type: types.INCREMENT
};
}
export function decrement() {
return {
type: types.DECREMENT
};
}
如何在 reducer 中获取 action 参数?
// File: app/reducers/counter.js
export default function counter(state = initialState, action = {}) {
switch (action.type) {
case types.INCREMENT:
return {
...state,
count: state.count + 1
};
case types.DECREMENT:
return {
...state,
count: state.count - 1
};
case types.SETCOUNTER:
return {
...state,
count: value /* How do I access an action argument ?? */
};
default:
return state;
}
}
如何将参数传递给 setCounter 操作?
File: app/components/counter.js
export default class Counter extends Component {
constructor(props) {
super(props);
}
render() {
const { counter, increment, decrement, setCounter } = this.props;
return (
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Count:{counter}</Text>
<TouchableOpacity onPress={setCounter(99)} style={styles.button}>
<Text>Reset to 99</Text>
</TouchableOpacity>
<TouchableOpacity onPress={increment} style={styles.button}>
<Text>up</Text>
</TouchableOpacity>
<TouchableOpacity onPress={decrement} style={styles.button}>
<Text>down</Text>
</TouchableOpacity>
</View>
);
}
}
我正在使用这个反例学习 react-native redux:
https://github.com/alinz/example-react-native-redux
这个应用程序有两个按钮;递增和递减调用计数器上的操作和计数器值重新呈现。
我想添加第三个按钮以将 setCounter 设置为任意值。
提前致谢,
-埃德
javascript, react-native, redux 新手
我不明白在我的视图组件渲染函数中调用 setCounter(value) 的 javascript 语法?
{setCounter(99)} 不起作用?
渲染(){
const { 计数器、递增、递减、setCounter } = this.props;
return (
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Count:{counter}</Text>
<TouchableOpacity onPress={setCounter(99)} style={styles.button}>
<Text>Reset to 99</Text>
</TouchableOpacity>
<TouchableOpacity onPress={increment} style={styles.button}>
<Text>up</Text>
</TouchableOpacity>
<TouchableOpacity onPress={decrement} style={styles.button}>
<Text>down</Text>
</TouchableOpacity>
</View>
);
}
试试这个...您的所有参数都将存在于操作对象中。
case types.SETCOUNTER:
return {
...state,
{count: action.value}
};
或者你可以这样做:
case types.SETCOUNTER:
return {
...state.count,
...action.value
};
在您的动作创建器中,您正在将 value
添加到动作对象:
// File: app/actions/counterActions.js
export function setCounter(value) {
return {
type: types.SETCOUNTER,
value // it will add key `value` with argument value.
};
}
因此,您可以通过此键在 reducer 中访问此值,例如:
case types.SETCOUNTER:
return {
...state,
count: action.value
};
我的主要挑战之一是不理解 javascript。
这解决了调用问题:
<TouchableOpacity onPress={() => setCounter(99)} style={styles.button}>
<Text>Reset to 99</Text>
</TouchableOpacity>
如何从我的组件的渲染函数中使用 value 参数调用 setCounter 操作?
如何在 reducer 中访问操作的参数?
// File: app/actions/counterActions.js
export function setCounter(value) {
return {
type: types.SETCOUNTER,
value
};
}
export function increment() {
return {
type: types.INCREMENT
};
}
export function decrement() {
return {
type: types.DECREMENT
};
}
如何在 reducer 中获取 action 参数?
// File: app/reducers/counter.js
export default function counter(state = initialState, action = {}) {
switch (action.type) {
case types.INCREMENT:
return {
...state,
count: state.count + 1
};
case types.DECREMENT:
return {
...state,
count: state.count - 1
};
case types.SETCOUNTER:
return {
...state,
count: value /* How do I access an action argument ?? */
};
default:
return state;
}
}
如何将参数传递给 setCounter 操作?
File: app/components/counter.js
export default class Counter extends Component {
constructor(props) {
super(props);
}
render() {
const { counter, increment, decrement, setCounter } = this.props;
return (
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Count:{counter}</Text>
<TouchableOpacity onPress={setCounter(99)} style={styles.button}>
<Text>Reset to 99</Text>
</TouchableOpacity>
<TouchableOpacity onPress={increment} style={styles.button}>
<Text>up</Text>
</TouchableOpacity>
<TouchableOpacity onPress={decrement} style={styles.button}>
<Text>down</Text>
</TouchableOpacity>
</View>
);
}
}
我正在使用这个反例学习 react-native redux: https://github.com/alinz/example-react-native-redux
这个应用程序有两个按钮;递增和递减调用计数器上的操作和计数器值重新呈现。
我想添加第三个按钮以将 setCounter 设置为任意值。
提前致谢,
-埃德 javascript, react-native, redux 新手
我不明白在我的视图组件渲染函数中调用 setCounter(value) 的 javascript 语法?
{setCounter(99)} 不起作用?
渲染(){ const { 计数器、递增、递减、setCounter } = this.props;
return (
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Count:{counter}</Text>
<TouchableOpacity onPress={setCounter(99)} style={styles.button}>
<Text>Reset to 99</Text>
</TouchableOpacity>
<TouchableOpacity onPress={increment} style={styles.button}>
<Text>up</Text>
</TouchableOpacity>
<TouchableOpacity onPress={decrement} style={styles.button}>
<Text>down</Text>
</TouchableOpacity>
</View>
);
}
试试这个...您的所有参数都将存在于操作对象中。
case types.SETCOUNTER:
return {
...state,
{count: action.value}
};
或者你可以这样做:
case types.SETCOUNTER:
return {
...state.count,
...action.value
};
在您的动作创建器中,您正在将 value
添加到动作对象:
// File: app/actions/counterActions.js
export function setCounter(value) {
return {
type: types.SETCOUNTER,
value // it will add key `value` with argument value.
};
}
因此,您可以通过此键在 reducer 中访问此值,例如:
case types.SETCOUNTER:
return {
...state,
count: action.value
};
我的主要挑战之一是不理解 javascript。
这解决了调用问题:
<TouchableOpacity onPress={() => setCounter(99)} style={styles.button}>
<Text>Reset to 99</Text>
</TouchableOpacity>