Я использую форму ValueSelector и работаю с массивом вычисляемых полей. Когда я использую этот синтаксис, у меня возникает проблема с синтаксисом, но не ошибка времени выполнения.
Это формула для вычисления промежуточного итога:
const calculatedSubtotal =
(detail[this.props.index].quantity,detail[this.props.index].product.price) =
detail[this.props.index].quantity * detail[this.props.index].product.price
И это формула для расчета всего:
const calculatedTotal = (detail[this.props.index}].subtotal) = 0 +
detail[this.props.index].subtotal
Когда я выполняю эти строки, у меня возникают проблемы с синтаксисом.
Detail - это имя fieldArray.
Как я могу объявить спецификацию поле из массива полей для вычисления?.
Что не так?
это мой компонент renderDetail:
renderDetail = ({fields, meta: { error,submitFailed}}) => (
<dl>
<dt>
<button type="button" className= 'btn btn-primary'
onClick={() => fields.push()}>Add Detail</button>
{submitFailed && error && <span>{error}</span>}
</dt>
{ fields.map((item, index) =>
<dd key={index}>
<br></br>
<button className= 'btn btn-light mr-2'
type="button"
title="Remove detail"
onClick={() => { fields.remove(index)
if(fields.length == 0 || fields.length ===
undefined){
}
try{
for(let x in fields){
fields.remove(index)
let d = fields.selectedIndex;
if(fields.remove(index) && d >= 1 && d<
fields.length ){
fields.removeAll(index);
}
}
}catch{console.info("deletes Index")}
}}> Delete </button>
<h4>Item #{index + 1}</h4>
<Field
id={`${item}._id`}
name={`${item}.quantity`}
component= {NumberPicker}
placeholder= '...quantity'
label = "Quantity"
/>
<br></br>
<h3><b>Product</b></h3>
<Field
id={`${item}._id`}
name={`${item}.product.code`}
type="number"
component= {RenderFieldNumber}
placeholder='...Product's code'
label = "product's code"
/>
<Field
id={`${item}._id`}
name={`${item}.product.name`}
type="text"
component= {RenderField}
placeholder='...Product's name'
label = "product's name"
/>
<Field
id={`${item}._id`}
name={`${item}.product.price`}
component= {NumberPickerFloat}
placeholder= '...Price'
label = "Product's price"
/>
<br></br>
<h3><b>Subtotal</b></h3>
<Field
id={`${item}._id`}
name={`${item}.subtotal`}
component= {SubtotalWidget}
placeholder= '...subtotal'
label = "Subtotal"
/>
</dd>
)
}
{error && <dt className="error">{error}</dt>}
</dl>
);
И в методе рендеринга я получаю этот путь к fieldArray:
<div>Detail:</div>
<FieldArray
name='detail'
component={this.renderDetail}
label='Detail'
/>
Более подробную информацию можно получить по Как получить доступ к указанному полю из массива полей для вычисления промежуточных итогов
Пожалуйста, просмотрите обсуждения и ответы на этот пост. , Мы можем найти решение.