#javascript #reactjs
Вопрос:
Я пытаюсь придать кнопке свойство по щелчку изменить sendSubTotals
состояние на true.Если это состояние верно , я хочу, чтобы дочерние элементы возвращали функцию обратного getSubTotal
вызова, чтобы вычесть промежуточный итог из каждого дочернего элемента, а затем установить total
. У меня возникла проблема при возврате обратного вызова у ребенка. С помощью консоли.в журнале я могу видеть , вводится ли оператор (который основан на состоянии родителя), но функция обратного вызова от return ()=>getSubTotal(subTotal)
по-прежнему сохраняет общее значение 0.Как я мог бы решить эту проблему? Большое спасибо!
Это состояние, для которого установлено значение True — необходимо отправить промежуточный итог дочернего элемента родителю(передается в событии onClick).:
const [sendSubTotals,setSendSubTotals]=React.useState(false)
const handleTotalClick=(event)=>{
setSendSubTotals(true)
event.preventDefault()
}
Это функция, которая вычисляет общую сумму в родительском:
const getSubTotal=(subTotal)=>{
const result=total subTotal
setTotal(result)
console.log("TOTAL WAS COMPUTED")
}
Вот как я передаю реквизит детям:
<ControlledOpenSelect ourObject={ourObject} key={item.id} onRemove={()=>handleRemove(item.id)} getSubTotal={getSubTotal} substractSubTotal={substractSubTotal} sendSubTotals={sendSubTotals} />
И вот как я вызываю getSubTotal
функцию в ребенке:
if (sendSubTotals===true){
console.log("SUBTOTAL OF THIS COMPONENT WAS SENT TO PARENT")
console.log(subTotal)
return ()=>getSubTotal(subTotal)
}if (sendSubTotals===false){
console.log("NOT SENT TO PARENT")
}
Комментарии:
1. можете ли вы поделиться своим кодом в любой песочнице кода??
2.
getSubTotal={(subTotal) => getSubTotal(subTotal)}
вы должны передать аргумент3. Вот кодовая песочница: codesandbox.io/live/cmmecq0 .
4. @Rajdeep Debnath Это не работает… Этот файл console.log
console.log("TOTAL WAS COMPUTED")
никогда не вызывается5. @Rajdeep Debnath Спасибо тебе !