Javascript 将更新的变量传递给RreactJS组件,但变量在组件内部未正确更新
我正在将一个名为rows的变量传递给一个组件“Hello”。如果我删除该组件,并简单地在{rows}周围放置“p”标记,它将显示变量正在正确更新。但是,当我将{rows}传递给“Hello”时,它不会正确更新。有人能解释一下这个问题的解决方法吗 注意:此代码段是更大项目的一部分。存在一个基于用户选择的状态,用于更新“filterBy”变量。因此,我不确定这是否是基于更改状态的渲染问题,因为行正在更改和更新 代码如下:Javascript 将更新的变量传递给RreactJS组件,但变量在组件内部未正确更新,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我正在将一个名为rows的变量传递给一个组件“Hello”。如果我删除该组件,并简单地在{rows}周围放置“p”标记,它将显示变量正在正确更新。但是,当我将{rows}传递给“Hello”时,它不会正确更新。有人能解释一下这个问题的解决方法吗 注意:此代码段是更大项目的一部分。存在一个基于用户选择的状态,用于更新“filterBy”变量。因此,我不确定这是否是基于更改状态的渲染问题,因为行正在更改和更新 代码如下: var Hello = React.createClass({
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函数中,变量是正确的。它正在更新。由于某种原因,当我将它放在所有表中时,尽管它不工作。对不起,我是说在“你好”组件渲染功能。天哪…你太棒了!不知道为什么我一开始就不这么做。谢谢!!!