Hide
Дак а ты из старых или новый какой то?))
honey
ну ладно, удачи
blvkes
Hide
А я думал мистер
Hide
Ну ладно вэлкам
blvkes
Hide
Спрашивай не стесняйся
blvkes
Благодарю
Hide
Мы тут токсиков не держим 😆
Александр
нифига вы тут развели)
Александр
так ладно) Не буду начинать)
Отвечу просто) Посмотри еще раз что такое state и как с ним работают.
Все изменения стейта происходят через setState
В onclick прописан метод. Почему стрелочный? Потому что тебе нужно прокинуть объект movies. Без стрелочной функции ты не сможешь его прокинуть в какую-либо функцию.
Тут работает одновременно замыкание и получение контекста выполнения от родителя.
Т.е. создать такую анонимную функцию ты можешь получить доступ к объекту выше (т.е. movies)
Александр
При нажатии на кнопку отработает метод с уже зафиксированным объектом в функции. Т.е. в момент отрисовки компонента у тебя фиксируется конкретный объект с которым функция вызывается)
Александр
окончательно запутал?)))
Hide
Завтра возьму лист А4 для списка вопросов 😱
Hide
А всё прочитал сейчас на свежую голову стало понятно 😆
♫♪Иван♫♪
привет
Hide
Этот бот всем в лс наспамил?
honey
Hide
Ато как то странно зашёл вышел и бдыщ спам
Hide
Я думал запарсил контакты всех из чата
honey
Hide
Курс по реакту тереблю))
Hide
Вот некоторые моменты были непонятны
Hide
Мне кстати удалось скачать монго
Hide
Hide
кароч затык среактом
Hide
import React, { Component } from 'react';
import Header from './header';
class Headers extends Component {
state = {
headers: [
{id: 1, value: 10},
{id: 2, value: 0},
{id: 3, value: 0},
{id: 4, value: 0},
{id: 5, value: 0},
]
};
handleDelete = (headerId) => {
// const headers = this.state.headers.filter(c => c.id !== headerId);
// this.setState({headers: headers});
console.log('Event prop!', headerId)
}
render() {
return (
<div>
{this.state.headers.map(header => <Header key={header.id} onDelete={this.handleDelete} value={header.value}>
<h4>Header #{header.id}</h4>
</Header>)}
</div>
);
}
}
export default Headers;
Hide
это родитель
Hide
import React, { Component } from 'react';
class Header extends Component {
state = {
id: this.props.id,
value: this.props.value
}
handleIncrement = () => {
this.setState({ value: this.state.value + 1 });
};
render(){
return(
<div>
{this.props.children}
<span className={this.getBadgeClass()}><h3>A component of list {this.formatCount()}</h3></span><button
onClick={this.handleIncrement}
className="btn btn-secondary btn-sm tButton"
>Click</button>
<button
onClick={() => this.props.onDelete(this.props.id)}
className="btn btn-danger btn-sm tButton"
>Delete</button>
</div>
)
}
getBadgeClass(){
let classes = 'badge bg-';
classes += this.state.value === 0 ? "warning" : "primary";
return classes
//динамик класс подстановка по условию
}
formatCount() {
const { value } = this.state;
return value === 0 ? "Not clicked" : value + " times clicked";
}
}
export default Header
Hide
а это компонент с кнопки которого надо получить id из state родителяв консоль
Hide
id получается undefined
Hide
перепроверил несколько раз уже мозг кипит
Hide
Лошпеды в реакт чате обругали классы и забыковали))
Hide
Токсики сука
Hide
причем функция в родителе срабатывает но id undefined
Hide
Pavel
Так ты же не передаешь id в дочерний
Pavel
А че за таймер на сообщения в 10 сек?
Pavel
Нах он нужен
Pavel
Pavel
Блин, на сколько же функциональные проще, чем классовые читаются, офигеть
Pavel
Ну будут каждые 10 сек спамить 🤭
Hide
то есть в родителе надо написать this.props.id где то? ))
Pavel
Pavel
Добавляешь id={header.id}
Hide
урааа спасибо ))
Hide
<Header key={header.id} id={header.id} onDelete={this.handleDelete} value={header.value}>
Hide
то есть это все замаскированные пропсы? ))
Hide
id, onDelete, value
Hide
ихха и удаление тоже заработало!
Hide
магия реакта!!!
Hide
Pavel
Так они не замаскированные, ты их сам передаешь 😅
Hide
Так я видео на ютубе смотрел там так и пишут this.props.id
Hide
Чето такое
Pavel
Ну это в дочернем
Hide
Спасибо!
Pavel
Hide
такс еще вопросец )
Hide
import React, { Component } from 'react';
import Header from './header';
class Headers extends Component {
state = {
headers: [
{id: 1, value: 10},
{id: 2, value: 0},
{id: 3, value: 0},
{id: 4, value: 0},
{id: 5, value: 0},
]
};
handleDelete = (headerId) => {
const headers = this.state.headers.filter(c => c.id !== headerId);
this.setState({headers: headers});
console.log('Event prop!', headerId)
}
render() {
return (
<div>
{this.state.headers.map(header => <Header key={header.id} header={header} onDelete={this.handleDelete} value={header.value}>
<h4>Header #{header.id}</h4>
</Header>)}
</div>
);
}
}
export default Headers;
Hide
увидел в курсе что чтоб не делать кучу пропсов можно сделать header={header}
Hide
получается доступ ко всем пропсам header?
Hide
а сам header получаем из метода map() т к создается новый массив?
Hide
правильно понимаю?
Александр
Нет, ты просто все пропсы в объект складываешь.
Либо в функцию. Но это плохая практика
Александр
Там реактивность внутри объекта теряется
Александр
Работает, только если полностью объект пересоздавать при изменении атрибутов
Hide
Mosh Hamedani злодей! Что за курсы делает 😈😃
Hide
Александр
Если без лишних библиотек, тогда пропсы)
Hide
не понял
Hide
отдельно каждый делать?
Александр
Если не нужно отслеживать внутреннюю структуру headers, тогда можно и так
Александр
Hide
id={header.id} value={header.value} ?
Александр
Так, я понял. Тут вопрос не правильно задан
Александр
В компонент в примере передается массив хедеров
Александр
Далее ты с ним работаешь и пропихиваешь отдельный хедер внутрь другого компонента
Александр
Там все правильно