Parsing 不能';t进入';这';这是传递给它的
我正在代码中的函数中使用setState()。我将对象传递给该函数。问题是代码根本没有进入函数Parsing 不能';t进入';这';这是传递给它的,parsing,reactjs,Parsing,Reactjs,我正在代码中的函数中使用setState()。我将对象传递给该函数。问题是代码根本没有进入函数updateState。在我的代码中,请搜索警报(“进入函数”),并尝试理解编译器无法到达该警报代码行的原因 谢谢 var React=require('React'); var Parse=require('Parse')。Parse; var ParseReact=require('parse-react'); module.exports=React.createClass({ Mixin:[P
updateState
。在我的代码中,请搜索警报(“进入函数”)
,并尝试理解编译器无法到达该警报代码行的原因
谢谢
var React=require('React');
var Parse=require('Parse')。Parse;
var ParseReact=require('parse-react');
module.exports=React.createClass({
Mixin:[ParseReact.Mixin],
//观察功能-新提出的prarse react集成功能
注意:函数(){
//在这里声明您需要的任何变量。
返回{
product:(新建Parse.Query('product'))
.升序('createdAt')
};
},
getInitialState:函数(){
返回{
//如果cookie在那里,它将返回我保存为“true”字的cookie值。
FTWVeyCc4o:错误,
};
},
//渲染
render:function(){
if(this.data.product.length){
变量内容=(
{this.data.product.map(函数(p)){
this.updateState.bind(this,p);
返回(
//来自设计
{p.name}
{p.size}
{(
(this.state.FTWVeyCc4o&(p.objectId==“FTWVeyCc4o”))|(this.state.aJ3DoJp352&(p.objectId==“aJ3DoJp352”)|(this.state.dgeRhSG21U&(p.objectId==“dgeRhSG21U”)?“删除”:“添加”
)}
);
},这个)}
);
}
否则{
变量内容=(
)
}
返回内容;
},
//更新状态
更新:功能{
警报(“进入功能”)
如果(s.objectId==“FTWVeyCc4o”)
{
this.setState({FTWVeyCc4o:this.getCookiefunc('RahlTradingProductID-FTWVeyCc4o'));
}
},
ProductButtonClicked:功能(obj){
if(this.getCookiefunc('RahlTradingProductID-'+objectId)==“”)
{//alert(“创建Cookie”)
//创建cookie
document.cookie=“RahlTradingProductID-”+obj.objectId+”=true;expires=2017年12月18日星期四UTC 12:00:00;path=/”;
//更新状态
if(obj.objectId==“FTWVeyCc4o”)
{
this.setState({FTWVeyCc4o:true});
}
else if(obj.objectId==“aJ3DoJp352”)
{
this.setState({aJ3DoJp352:true});
}
else if(obj.objectId==“dgeRhSG21U”)
{
this.setState({dgeRhSG21U:true});
}
}
其他的
{//alert(“删除Cookie”)
//删除cookie
document.cookie=“RahlTradingProductID-”+obj.objectId+”=;expires=Thu,2000年12月18日12:00:00 UTC;path=/”;
if(obj.objectId==“FTWVeyCc4o”)
{
this.setState({FTWVeyCc4o:false});
}
else if(obj.objectId==“aJ3DoJp352”)
{
this.setState({aJ3DoJp352:false});
}
else if(obj.objectId==“dgeRhSG21U”)
{
this.setState({dgeRhSG21U:false});
}
}
/
getCookiefunc:函数(cname){
变量名称=cname+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i });
看起来您的函数updateState()
实际上从未从代码中调用过
this.updateState.bind(this,p)
bind参数到您的函数,但不调用它
您的代码需要具有:
- 某个地方的
语句this.updateState(p)
- 或者Jsx(按钮)中的
}onClick={this.updateState.bind(this,p)
当前,按钮单击调用
productButtonClicked
。但是在该函数中,您只调用setState,而不调用UpdateEstate。假设我需要在循环中调用UpdateEstate函数,而不是在按钮单击中。例如,(this.data.product.map(函数(p){ThisUpdateEstate…);那么我如何用这种方式修复它呢?从循环内部调用函数意味着将…bind()
语句更改为this.updateState(p)
。但这不起作用:您不应该调用setState()
在渲染循环内。可以从productButtonClicked
调用。我仍然需要从循环内调用updateState函数,因此如何解决此问题?不应在渲染循环内设置状态。可以移动/复制this.data.product.map()
循环到渲染周期之外的某个地方,可能在reactcomponentWillReceiveProps()
生命周期函数内。由于您使用的是Parse-react,解决方案可能是将cookie包含在observe()
函数内。(我不太熟悉Parse)。