2017-02-15 205 views
1

我有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(){ 
    .... 
    .... 
    } 
} 

我如何通过总共变量从qPage到ChooseLevel页面?

+0

您的qpage有东西要渲染? – Codesingh

+0

是的,我省略了部分代码。 – splunk

+0

你在使用REDX吗? – Codesingh

回答

1

你需要做的是什么,我会走一步看一步:

1)创建一个更大的动作,并通过这一行动中计算出的值。通过道具(减速计算值

2)接入)

3)您可以使用componentWillUpdateProp(nextprops),这里面机能的研究赋予这个新道具之类的状态。

干杯:)

+0

好的,我遵循了这些步骤。现在里面mapStateToProps函数(这是在ChooseLevel.js文件)我可以正确console.log总值和如果我打印它里面render()方法我可以成功地看到它。我现在的问题是,我试图在componentWillReceiveProps()中使用console.log(this.props.total),但它返回undefined – splunk

+0

您能否告诉我代码 – Codesingh

相关问题