React подскажите новичку
export default class AppHeader extends Component { constructor() { super(); } state = { data : [ {label: 1}, {label: 23}, {label: 45} ] } plusOne = () => { } render() { const elem = this.state.data.map((item) => { return( <div key={item.label}> <div>{item.label}</div> <div>++</div> </div> ) });; return ( <div>{elem}</div> ) } } Выводится все норм, но как сделать onClick на ++ чтобы срабатывало plusOne и в нужный label плюсовалось плюс 1 что то застопорился на этом подскажите пожалуйста |
Цитата:
Вот как нужно оформлять и работать со стейтом https://learn-reactjs.ru/tutorial#ma...tive-component |
alacka, тут вообще есть куча вариаций на тему "счетчика"...
https://askdev.ru/q/uvelichenie-znac...-react-482725/ |
Спасибо, да я только начинаю
немного продвинулся дальше, но почему то записать не получается const index = data.findIndex(elem => elem.label == label); data[index].label = 7; index - показывает нужный елемммент, но перезаписать выдает ошибку export default class AppHeader extends Component { state = { king : 2, data: [ {label: 2}, {label: 44}, {label: 65} ] } plusOne = (label) => { this.setState(({data}) => { const index = data.findIndex(elem => elem.label == label); data[index].label = 7; }) } render() { const allpost = this.state.data.map(item => { return ( <div key={item.label}> <div>{item.label}</div> <div onClick={() => this.plusOne(item.label)}>++</div> </div> ) }) return ( <> {allpost} </> ) } } |
Цитата:
Один из таких подходов показан в примере (ссылку я давал выше) handleClick(i) { const squares = this.state.squares.slice(); squares[i] = 'X'; this.setState({squares: squares}); } Т.е. делается "копия" всего массива и в копии меняется нужный элемент. После этого "оригинальный" массив заменяется "новым". Так же хочу заменить (раз ты используешь уже массив объектов) имеет смысл установить элементам ИД. Так Реакт сможет более "продуктивно" выполнять рендеринг твоих компонентов. ;) |
alacka, вот тебе еще статейка про использование setState()...
https://dev-gang.ru/article/react-se...ut-9rojos2c9r/ дело в том что ты не правильно используешь функцию, которую ты передаешь в setState(). Суть той функции довольно проста: - принять "старое" состояние - вернуть обновленное. Вот собственно "возврата" у тебя и нет. :( Общий тебе совет - начни читать книги по Реакту. В противном случае ты так и будешь "тыкаться как мокрый телок" в разные ситуации, которые сам же будешь создавать по незнанию. |
Цитата:
https://ru.pdfdrive.com/reactjs-дл...188733903.html |
Но лучше вот эту.
https://ru.pdfdrive.com/react-в-д...190138292.html |
Часовой пояс GMT +3, время: 09:13. |