Мне нужно передать props
дочернему компоненту Product
, но я не знаю, чего я здесь не вижу.Невозможно передать реквизит из родительского компонента в дочерний компонент
Родитель Компонент:
var Products = React.createClass({
getInitialState: function(){..},
deleteProduct: function(){..},
updateProduct: function(){..},
render: function(){
var products = _.map(this.state.products, function(product){
return(
<Product key={product.id} product={product} handleDeleteProduct={this.deleteProduct} handleEditProduct={this.editProduct} formData={this.props.formData}/>
)
});
return (
<table>
<thead>
<tr>
<th>Name</th>
<th>Quantity</th>
<th>Price</th>
<th colSpan="4">Actions</th>
</tr>
</thead>
<tbody>
{products}
</tbody>
</table>
)
}
});
Детский компонент:
var Product = React.createClass({
console.log(this); //props: handleDeleteProduct: undefined, handleEditProduct: undefined
handleEdit: function() {
e.preventDefault();
data = {..};
$.ajax({
..,
success: (function(_this) {
console.log(_this); //props: handleDeleteProduct: undefined, handleEditProduct: undefined
return function(data) {
_this.setState({
edit: false
});
return _this.props.handleEditProduct(_this.props.product, data);
};
})(this)
});
}
});
Я могу использовать key
и product
в качестве реквизита внутри компонента, но не this.props.handleDeleteProduct
и this.props.handleEditProduct
. Я думаю, может быть, я использую props
внутри обратного вызова success
$.ajax
, а затем может быть связано с асинхронным запросом. Не уверен.
Ошибка я получаю это
Uncaught TypeError: _this.props.handleEditProduct is not a function
Я не уверен, что я делаю неправильно здесь. Я попытался зациклиться между <tbody>
, но все равно не повезло. Также здесь я вызываю функции как this.deleteProduct
в качестве ссылки, но не по вызову функции. И если я делаю вызовом по функции, то сообщается об ошибке execjs
.
Я принял это в качестве эталона для зацикливания внутри JSX
: loop inside React JSX
но не повезло. Пожалуйста помоги.
Я не вижу в 'функцию handleEditProduct' на 'Product' – bryce
Также, какова точка этой строки' formData = {this.props.} '? Это опечатка? – taylorc93
@guavacat: его написано внутри успеха: 'return _this.props.handleEditProduct (_this.props.product, data);' –