action - 如何使用参数调用 redux 操作并从 reducer 访问?

标签 action react-native redux

如何调用 设置计数器 使用 操作值(value) 来自我组件的渲染函数的参数?

你如何在 reducer 中访问 Action 的参数?

// 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 新手

我不理解在我的 View 组件渲染函数中调用 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>
);

}

最佳答案

在您的 Action 创建器中添加 value Action 对象:

// 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
  };

关于action - 如何使用参数调用 redux 操作并从 reducer 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35760749/

相关文章:

javascript - react Redux : dispatch returning data to component

javascript - 出现错误 TypeError : Cannot read property 'id' of undefined using React/Redux action

javascript - Ember.js - 我希望在转换到新路线时触发一个 Action 事件(在 =""上)

react-native-router-flux 标签栏位置顶部

reactjs - 观察者加载时间太长(NodeWatcher) - React Native

react-native - 如何根据 subview 高度设置父 View 的高度

java - 将键绑定(bind)添加到 JButton 以从操作命令获取它们的操作?

c++ - Cocos2d-x runAction 报错

ios - 如何向自定义 UIButton 添加点击操作?

reactjs - 如何在 React 组件之外调度操作