gpt4 book ai didi

javascript - 将状态传递给 Ajax 调用 ReactJS 和 Rails

转载 作者:行者123 更新时间:2023-11-29 21:30:50 27 4
gpt4 key购买 nike

我有一个 ProductItem 组件,当用户单击“添加到购物车”时,它会执行 AJAX post 调用以创建购物车项目。

但是目前我似乎无法将状态传递到 Ajax 调用中,因此它缺少所需的动态数据。

当我在 chrome 上 checkin React 开发人员工具时,该组件看起来像这样,并且状态在 Product Item 组件上设置正确。

class ProductItem extends React.Component{

constructor() {
super()

this.state = {
name: '',
price: 0,
code: '',
id: ''
}
}

componentWillMount() {
this.setState( {
name: this.props.data.name,
price: this.props.data.price,
code: this.props.data.code,
id: this.props.data.id
})
}

addtoBasket(props) {
console.log(props.name) /* RETURNS UNDEFINED */
$.ajax({
type: "POST",
url: "/items",
dataType: "json",
data: {
item: {
name: 'Trousers',
price: 52.00,
code: 'T01'
}
},
success: function() {

console.log("success");
},
error: function () {
console.log("error");
}
})
}

render(){
let productName = this.props.data.name
let productPrice = this.props.data.price
let productCode = this.props.data.code
let productImg = this.props.data.image_url

return (
<div className="col-xs-12 col-sm-4 product">
<img src={productImg}/>
<h3 className="text-center">{productName}</h3>
<h5 className="text-center">£{productPrice}</h5>
<div className="text-center">
<button onClick={this.addtoBasket.bind(this.props)} className="btn btn-primary">Add to Basket</button>
</div>
</div>
)
}

我该如何解决这个问题并正确地将状态或 Prop 传递给调用?

最佳答案

将您的按钮更改为以下代码

<button onClick={this.addtoBasket.bind(this)} className="btn btn-primary">Add to Basket</button>

然后你就可以得到这个的上下文。

或者其他方式

 <button onClick={this.addtoBasket.bind(this , this.props)} className="btn btn-primary">Add to Basket</button>

在addtoBasket方法中

addtoBasket(props){
console.log("Prrops" , props)
}

这应该有效:)

关于javascript - 将状态传递给 Ajax 调用 ReactJS 和 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36544922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com