Parsing 不能';t进入';这';这是传递给它的

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

我正在代码中的函数中使用setState()。我将对象传递给该函数。问题是代码根本没有进入函数
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()
循环到渲染周期之外的某个地方,可能在react
componentWillReceiveProps()
生命周期函数内。由于您使用的是Parse-react,解决方案可能是将cookie包含在
observe()
函数内。(我不太熟悉Parse)。