“реагировать, как обновить массив состояний” Ответ

реагировать, как обновить массив состояний

const initialState = [
    { name: "foo", counter: 0 },
    { name: "far", counter: 0 },
    { name: "faz", counter: 0 }
  ];

const [state, setState] = useState(initialState);

const clickButton = () => {
	// 1. Make a shallow copy of the array
	let temp_state = [...state];
	
	// 2. Make a shallow copy of the element you want to mutate
	let temp_element = { ...temp_state[0] };
	
	// 3. Update the property you're interested in
	temp_element.counter = temp_element.counter+1;
	
	// 4. Put it back into our array. N.B. we *are* mutating the array here, but that's why we made a copy first
	temp_state[0] = temp_element;
	
	// 5. Set the state to our new copy
	setState( temp_state );
}
Annoyed Aardvark

Как добавить данные массива в состояние реагирования

this.setState({ myArray: [...this.state.myArray, 'new value'] }) //simple value
this.setState({ myArray: [...this.state.myArray, ...[1,2,3] ] }) //another array
Zany Zebra

отреагировать нативное массив состояний обновлений объектов

let markers = [ ...this.state.markers ];
markers[index] = {...markers[index], key: value};
this.setState({ markers });
Blue Beetle

отреагировать нативное массив состояний обновлений объектов

let newMarkers = markers.map(el => (
      el.name==='name'? {...el, key: value}: el
))
this.setState({ markers });
Blue Beetle

Ответы похожие на “реагировать, как обновить массив состояний”

Вопросы похожие на “реагировать, как обновить массив состояний”

Больше похожих ответов на “реагировать, как обновить массив состояний” по JavaScript

Смотреть популярные ответы по языку

Смотреть другие языки программирования