Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将变量传递到方法';反应的范围是什么?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何将变量传递到方法';反应的范围是什么?

Javascript 如何将变量传递到方法';反应的范围是什么?,javascript,reactjs,Javascript,Reactjs,我在render方法中获得了一个变量abc,希望将变量传递给navigateNext方法。我知道我们可以在外部声明一个全局变量。然而,我想知道是否有一个反应的方法来做这件事 var SelectedTopicPage = React.createClass({ getInitialState: function() { return{ topicPageNo: 0, total_selected_topic_pages: 1 }

我在
render
方法中获得了一个变量
abc
,希望将变量传递给
navigateNext
方法。我知道我们可以在外部声明一个全局变量。然而,我想知道是否有一个反应的方法来做这件事

var SelectedTopicPage = React.createClass({
    getInitialState: function() {
      return{
        topicPageNo: 0,
        total_selected_topic_pages: 1
      }
    },
    navigateBack: function() {
        let topicPageNo;
        if (this.state.topicPageNo > 0){
            topicPageNo = this.state.topicPageNo - 1;   
        }
        else {
            topicPageNo = 0;
        }
        this.setState({topicPageNo : topicPageNo});
    },
    navigateNext: function() {
        let topicPageNo = this.state.topicPageNo + 1;
        this.setState({topicPageNo : topicPageNo});
        console.log(abc);
    },
    render: function() {
        let topicsID = this.props.topicsID;
        let navigateNext = this.navigateNext;
        let navigateBack = this.navigateBack;
        let topicPageNo = this.state.topicPageNo;
        return (
            <div>
                {this.props.topicPages.filter(function(topicPage) {
                    return topicPage.topic_no === topicsID; // if condition is true, item is not filtered out
                }).map(function (topicPage) {
                    let abc = topicPage.topic_pages.length;
                    return (
                        <div>
                            <div>
                            <SelectedTopicPageMarkup headline={topicPage.topic_pages[0].headline} key={topicPage.topic_no}>
                                {topicPage.topic_pages[topicPageNo].description}
                            </SelectedTopicPageMarkup> 
                            </div>
                            <div>
                                <NextPrevBtn moveNext={navigateNext} moveBack={navigateBack}/>
                            </div>
                        </div>
                    );
                })}
            </div>
        );
    }
});
var SelectedTopicPage=React.createClass({
getInitialState:函数(){
返回{
主题页码:0,
所选主题页面总数:1
}
},
导航回退:函数(){
让我们来讨论一下主题;
如果(this.state.topicPageNo>0){
topicPageNo=this.state.topicPageNo-1;
}
否则{
topicPageNo=0;
}
this.setState({topicPageNo:topicPageNo});
},
navigateNext:函数(){
让topicPageNo=this.state.topicPageNo+1;
this.setState({topicPageNo:topicPageNo});
控制台日志(abc);
},
render:function(){
让topicsID=this.props.topicsID;
让navigateNext=this.navigateNext;
让navigateBack=this.navigateBack;
让topicPageNo=this.state.topicPageNo;
返回(
{this.props.topicPages.filter(函数(topicPages)){
return topicPage.topic\u no===topicsID;//如果条件为true,则不会筛选出项
}).map(功能(主题页){
设abc=topicPage.topic\u pages.length;
返回(
{topicPage.topic_pages[topicPageNo].description}
);
})}
);
}
});

abc
作为
navigateNext
函数的输入参数。(旁白:请给它起一个比abc更好的名字。)

现在在定义函数回调时使用它:

<NextPrevBtn moveNext={this.navigateNext.bind(this, abc)} moveBack={this.navigateBack}/>
<NextPrevBtn moveNext={this.navigateNext.bind(this, abc)} moveBack={this.navigateBack}/>
}).map(function (topicPage) {
    let abc = topicPage.topic_pages.length;
    return (
        /* etc */
    );
}.bind(this))}