将变量从一个组件传递到另一个组件,以反应原生

时间:2017-02-15 19:24:31

标签: react-native

我有ChooseLevel个组件,它有很多按钮。一旦我点击按钮onLevelSelected正在调用该函数,它就会调用动作创建者,它将返回一个动作类型,而且它会将我重定向到qPage组件。在qPage组件中,我进行了一些计算,并将结果放在总变量中。 这是我的代码:

ChooseLevel.js

class ChooseLevel extends Component {
    constructor(props) {
        super(props);
    }
    onLevelSelected(levelNumber) {
        this.props.levelSelected(levelNumber);
    }

    render(){
      <Button key={1} onPress={this.onLevelSelected.bind(this, 1)}>
      <Button key={2} onPress={this.onLevelSelected.bind(this, 2)}>
      <Button key={3} onPress={this.onLevelSelected.bind(this, 3)}>
      ....
    }
}

我的动作创建者如下所示:

import { Actions } from 'react-native-router-flux';
export const levelSelected = (levelNumber) => {
  return (dispatch) => {
      dispatch({
        type: 'level_selected', 
        payload: levelNumber
      });
      Actions.qPage();  // redirects me to qPage component 
  };
};

qPage.js

class qPage extends Component {
   constructor(props){
      ...
   }
   calc(){
       .... some calculation
       total = result of previous calculation 
   }
   render(){
     ....
     ....
   }
} 

如何将 total 变量从qPage传递到ChooseLevel页面?

1 个答案:

答案 0 :(得分:1)

你需要做的是,我会一步一步地去做:

1)再创建一个动作并在该动作中传递计算值。

2)通过道具(减速机)访问该计算值

3)你可以使用componentWillUpdateProp(nextprops),在这个功能中将这个新道具分配给班级的状态。

干杯:)