Я работаю над приложением React-Native \ Redux
- Я предварительно заполняю a по мере их рендеринга. Это прекрасно работает. 2.После заполнения я хотел бы вызвать действие отправки, чтобы значение каждого использовалось для выполнения некоторых вычислений, а затем для сохранения: я знаю, что невозможно обновить состояние во время рендеринга, но там, где я могу, добиться этого ?
Мне нужно, чтобы он обновлял состояние при создании полей ввода.
Любая помощь будет принята с благодарностью.
Спасибо
handleInputChange: function(product, productId, input){
let { currentSale, updateProductQuantity } = this.props;
let updatedCurrentSale = TransactionsService.updateProductQuantity(currentSale, product, productId, input);
let transaction = TransactionsService.packageTransaction(updatedCurrentSale);
updateProductQuantity(updatedCurrentSale, transaction)
},
updateProductQuantity вызывает действие disaptch, и здесь возникает проблема.
handleQuantityValue: function(product, productId){
let { orderSelected } = this.props;
if(orderSelected){
var index = orderSelected.products.findIndex(x => x.product_id==productId)
}
var i = index
if( i >= 0){
var qtty = orderSelected.products[i].product_quantity
this.handleInputChange(product, productId, qtty).bind(this)
return qtty.toString()
}
else{
return ''
}
},
возвращает значение количества
renderProducts: function(){
let { currentUser, currentSale, orderSelected } = this.props;
return _.map(currentSale.productSales, function(product, productId){
var qtty = this.handleQuantityValue(product, productId)
return <View style={Styles.questionPanel}>
<Question
product={product}
productId= {productId}
Order={ orderSelected }
quantity= { qtty }
onInputChange={this.handleInputChange}
/>
</View>
}.bind(this));
},
При этом отображаются продукты, и TextInput заполняется значением количество. Другое дело, что по мере его рендеринга я должен (не обязательно) отправить действие
render: function(){
let { currentSale } = this.props;
return (
<View style={{flex: 1}}>
<NavBar navigator={this.props.navigator} />
<ScrollView>
<Text style={[Styles.dayDisplayHeader, Styles.spacing]}>
Enter Your Sale:
</Text>
{this.renderProducts()}
<Calculator
productSales={currentSale.productSales}
totalSales={currentSale.totalSales}
/>
<Button text={'Save'} whenTapped={this.handleSubmit} />
</ScrollView>
</View>
)