React Native, как установить состояние для свойства (qtyCount) объекта в массиве - PullRequest
0 голосов
/ 04 июля 2018

Спасибо, что посмотрели! У меня есть приложение, в котором мне нужно увеличивать и уменьшать несколько счетчиков независимо

state = {
windowCounters: [
{
  id: 0,
  image: singlePane125x125,
  type: 'Single Pane',
  unitPrice: 4.25,
  qtyCount: 0,
  subtotal: 0,
},
{
  id: 1,
  image: twoPane125x125,
  type: '2 Panes',
  unitPrice: 8.0,
  qtyCount: 0,
  subtotal: 0,
},

], };

Я борюсь с моим методом приращения, это один из способов, которые у меня есть пытался Обновляется только один раз

incrementCount = (id) => {
this.setState(prevState => ({
  windowCounters: prevState.windowCounters.map(
    counter => (counter.id === id ? Object.assign(counter, { qtyCount: +1 }) : counter),
  ),
}));

};

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Когда вы делаете qtyCount: +1, вы фактически назначаете 1 для клавиши qtyCount. Вот почему у вас создается впечатление, что значение обновляется только один раз (попробуйте заменить его на +1000, и вы увидите, что это более понятно). Что вам нужно сделать, это добавить к предыдущему состоянию значения. Что-то вроде:

counter.qtyCount: counter.qtyCount +1

Если у вас есть вопросы по этому поводу, вы можете вживую попробовать эту ссылку:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Надеюсь, мой ответ был полезен.

0 голосов
/ 04 июля 2018

Похоже, вам не хватает counter.qtyCount в инструкции приращения.

Вот почему он обновляется только один раз, поскольку вы не увеличиваете его, а просто присваиваете значение +1.

{ qtyCount: +1 } // не будет увеличиваться.

Так и должно быть.

counter => (counter.id === id ? 
              Object.assign(counter, { qtyCount: counter.qtyCount+1 }) : counter), 
                                                 ^^^^^^^^^^^^^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...