Javascript 将更新的变量传递给RreactJS组件,但变量在组件内部未正确更新

Javascript 将更新的变量传递给RreactJS组件,但变量在组件内部未正确更新,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我正在将一个名为rows的变量传递给一个组件“Hello”。如果我删除该组件,并简单地在{rows}周围放置“p”标记,它将显示变量正在正确更新。但是,当我将{rows}传递给“Hello”时,它不会正确更新。有人能解释一下这个问题的解决方法吗 注意:此代码段是更大项目的一部分。存在一个基于用户选择的状态,用于更新“filterBy”变量。因此,我不确定这是否是基于更改状态的渲染问题,因为行正在更改和更新 代码如下: var Hello = React.createClass({

我正在将一个名为rows的变量传递给一个组件“Hello”。如果我删除该组件,并简单地在{rows}周围放置“p”标记,它将显示变量正在正确更新。但是,当我将{rows}传递给“Hello”时,它不会正确更新。有人能解释一下这个问题的解决方法吗

注意:此代码段是更大项目的一部分。存在一个基于用户选择的状态,用于更新“filterBy”变量。因此,我不确定这是否是基于更改状态的渲染问题,因为行正在更改和更新

代码如下:

    var Hello = React.createClass({
    rowMake: function(){
        return (
            <div>
                {this.props.rows.map(function(row, index){
                    return(
                        <tr>
                            <td key={index}>{row.title}</td>
                            <td>{row.status}</td>
                            <td>{row.created_at}</td>
                            <td>{row.updated_at}</td>    
                        </tr>
                    );
                  })
                }
            </div>
        );
    },
    render: function() {
          return (
            <div className="container">           
                <table className="table">
                  <thead>
                    <tr>
                      <th>Title</th>
                      <th>Status</th>
                      <th>Created</th>
                      <th>Updated</th>
                      <th>Delete</th>
                    </tr>
                  </thead>
                  <tbody>{this.rowMake()}</tbody>        
                </table>
          </div>
          );
    }
});


//RequestTable creates the table head and body.

var RequestTable = React.createClass({
    render: function() {
        requests = this.props.requests;
        filterBy = this.props.filterBy;
        var rows = [];
        for(var i = 0; i<requests.length; i++){
            if(filterBy == 'All'){
                rows.push(requests[i]);
            }
            else if(filterBy == 'Approved'){
                if(requests[i]["status"] == "Approved"){
                    rows.push(requests[i]);
                }
            }
            else if(filterBy == 'Denied'){
                if(requests[i]["status"] == "Denied"){
                    rows.push(requests[i]);
                }
            }
            else{
                if(requests[i]["status"] == "Pending"){
                    rows.push(requests[i]);
                }
            }
        }
        return(
            <Hello rows = {rows} />
        );
    }
});
var Hello=React.createClass({
rowMake:function(){
返回(
{this.props.rows.map(函数(行,索引){
返回(
{row.title}
{row.status}
{row.created_at}
{row.updated_at}
);
})
}
);
},
render:function(){
返回(
标题
地位
创建
更新
删除
{this.rowMake()}
);
}
});
//RequestTable创建表头和表体。
var RequestTable=React.createClass({
render:function(){
请求=this.props.requests;
filterBy=this.props.filterBy;
var行=[];
对于(var i=0;i我认为您的
rowMake()
函数在那里出错了

删除了
rowMake()
方法,并更新了
render
方法本身中的代码。当然,在处理使用
DOM
事件不断更新的
list
数据时,这是更好的方法


更新了

您是否记录了
this.props.rows
?还有一件事
tbody
不会将
div
作为直接子项。如果您的意思是在wrap{rows}中“logged”,请在它传递到“Hello”之前重构它在p标记中查看它是否更改,是的,我有。它会更新。但是由于某种原因,当我将它传递给组件并记录它时,它保留了很多旧值,并且没有正确更改。只有在我没有传递给“Hello”组件时才正确更改。不,我的意思是
console.log(行)
Hello
组件中,查看它们是否正确地通过了道具。console.log无法正常工作。因此,我所做的是将“{rows}

”放在rowMake函数中,变量是正确的。它正在更新。由于某种原因,当我将它放在所有表中时,尽管它不工作。对不起,我是说在“你好”组件渲染功能。天哪…你太棒了!不知道为什么我一开始就不这么做。谢谢!!!