Archer
понял
Андрей
import React from 'react'; import i from './Input.module.css'; import * as axios from "axios"; let Input =(props)=>{ let newNameElement=React.createRef(); let newMessageElement=React.createRef(); let onNameChange=()=> { let text = newNameElement.current.value; props.updateNewNameText(text); } let onMessageChange=()=> { let post = newMessageElement.current.value; props.updateNewPostText(post); } let onAddMessage=()=>{ axios.post('http://chat.solobut.ru:4000/business/add',{ name:props.name, message:props.message }).then(response =>props.addMessage(response.data) ) } return( <div className={i.Input}> {/*<form onSubmit={onSubmit}>*/} <input type={i.text} onChange={onNameChange} ref={newNameElement} placeholder={props.name} /> <input type={i.text} onChange={onMessageChange} ref={newMessageElement} placeholder={props.message} /> <button onClick={onAddMessage}>Send</button> {/*<input type="submit" value="Register Business" className="btn btn-primary"/> </form>*/} </div> ) } export default Input /*const Input =(props)=>{ let newMessageElement=React.createRef(); let newNameElement=React.createRef(); let onAddMessage=()=>{ props.addMessage(); } let onNameChange=()=>{ let text = newNameElement.current.value; props.updateNewNameText(text); } let onMessageChange=()=>{ let text = newMessageElement.current.value; props.updateNewPostText(text); } return( <div className={i.Input}> <form> <input type={i.text} onChange={onNameChange} ref={newNameElement} value={props.newNameText} /> <input type={i.text} onChange={onMessageChange} ref={newMessageElement} value={props.newPostText} /> <button onClick={onAddMessage}>Send</button> </form> </div> ) } export default Input*/
Archer
onAddMessage={this.onAddMessage}/>
Андрей
вот так работает все отлично
Archer
передай onAddMessage={this.onAddMessage}/>
Archer
в интуп
Archer
ты передаёь onAddMessage={this.props.onAddMessage}/>
Андрей
this в функциональной компоненте нет
Archer
в классе
Андрей
она только в классовой
Archer
return ( <Input updateNewPostText={this.props.updateNewPostText} updateNewNameText={this.props.updateNewNameText} addMessage={this.props.addMessage} name={this.props.name} message={this.props.message} onAddMessage={this.onAddMessage}/> )
Archer
в контейнере
Андрей
понял
Ilya Parakhin
Чо у тебя в итоге?
Андрей
так помогло но не совсем)
Archer
нода на экспрессе?
Archer
или коа
Ilya Parakhin
ты логику в компоненту вернул
Ilya Parakhin
логика - в контейнер, компонента - отрисовка
Андрей
да
Андрей
почему то 2 раза заносится сообщение
Андрей
первый раз то которое я ввел, а второе по дефолту
Ilya Parakhin
а ты в него вставил обращение к серверу: let onAddMessage=()=>{ axios.post('http://chat.solobut.ru:4000/business/add',{ name:props.name, message:props.message }).then(response =>props.addMessage(response.data) ) }
Archer
ты же в componentDidMount вызываешь
Ilya Parakhin
в смысле в компоненту
Андрей
а надо в конструкторе?
Ilya Parakhin
Класс (содержит логику) передает методы и данные в компоненту, которая отрисовывает все на основе переданных данных и вызывает методы класса по действиям (онКлик)
Ilya Parakhin
onAddMessage - метод должен быть в классе и передаваться в компоненту пропсой, а в компоненте вызываться просто по клику
Андрей
у меня сейчас после перезагрузки компоненты заносится сообщение по дефолту
Андрей
почему это происходит?
Archer
ты это делаешь в componentDidMount
Андрей
componentDidMount() { this.onAddMessage() }
Archer
вызываешь метод с запросом
Ilya Parakhin
ага
Archer
да убери его
Ilya Parakhin
этого не надо
Archer
в componentDidMount делают обычно запросы на получение данных
Андрей
все понял спасибо)
Андрей
все было бонально из за onAddMessage={this.onAddMessage}/>
Андрей
просто если метод объявлен в самой компоненте props не надо писать
Archer
А ты догадливый
Андрей
нет 3 часа на это потратил)
Андрей
по видео смотришь все понятно)
Андрей
а пока сам не сделаешь не отлаживается в уме) спасибо
Oleg
по поводу axios post проблема с follow/unfollow выдавал 401 ошибку unauthorized
Oleg
через xmlhttpreq работает
Oleg
может кому полезно будет
Archer
Фетч используй
Mourat
./src/components/posts/AddPost.jsx Line 12: Parsing error: Unexpected token 10 | <div className={styles.addPost}> 11 | { > 12 | if (typeof props.label !== 'undefined') { | ^ 13 | <label htmlFor="addPost">{props.label}</label> 14 | } 15 | }
Mourat
Как такое поправить?
Mourat
пробую проверить существование пропса перед тем как вывести объект
Ilya Parakhin
if(props.label)
Ilya Parakhin
если андеф => false
Ilya Parakhin
но если пустой будет тоже фолс
Mourat
может и так, но там что-то со скобками не то
Mourat
Vadim
{props.label && <label htmlFro ...></label}
Андрей
кто нибудь с socket.io дружит?
Mourat
{props.label && <label htmlFro ...></label}
спасибо. это лучший рецепт
Anonymous
Глупый наверное вопрос, но хотелось бы спросить. Нужно делать несколько фильтраций и сортов с массивом данных. При чем одна фильтрация представляет собой компоненту с определённой группой товаров. Вторая например фильтрация по диапазону цены. Сделал хок для всех отфильтроввнных компонент с фильтрацией по цене и сортировками. С помощью редукс форм получаю фильтры, храню их в стейте, но сама логика фильтраций написана в хоке. Это целесообразно вообще? Ну Типо проводить так много фильтров в компоненте с массивом, который получаю из пропсов
Archer
если тебе их надо будет исползовать по отдельности то да
Anonymous
Например? Ну каждая компонента по сути отфильтрованный по категории массив. Но да, в перспективе они могут отличаться и ещё чем нибудь) а как можно допустим реализовать функцию сортировки в редюсере? В данном случае. Просто я пробовал но у меня не меняется стейт:/
Anonymous
Может быть фейл в том, что я забыл про глубокую копию, точно не помню
Heavy
прислали через @g_codebot
Ulan
Ибо на сколько я понимаю смысл хоков, они не изменят данные, а добавляют свойства
ALI₭HⱯN
Ребята, а для чего нужен webpack? что это такое, часто в вакансиях вижу, прогуглил но толком ничего не понял. Объясните на примере в простых словах)
Vlad
Как залить реакт приложение на сервер?
Michael
Как залить реакт приложение на сервер?
npm run build, потом содержимое сливаешь на сервер
Vlad
Понял, принял, осознал, осмыслил
Michael
это, если с create-react-app было сделано
Віталія
это, если с create-react-app было сделано
И плюс в файле .json пару строк добавить перед тем, как выполнять эту команду)
Ilya Parakhin
Например? Ну каждая компонента по сути отфильтрованный по категории массив. Но да, в перспективе они могут отличаться и ещё чем нибудь) а как можно допустим реализовать функцию сортировки в редюсере? В данном случае. Просто я пробовал но у меня не меняется стейт:/
вообще желательно разделять данные и интерфейс. т.е. в редаксе хранишь полный список и значения фильтров(если они вынесены из отображалки или должны сохраняться) а уже в отображалке создаешь массив отсортированных данных для интерфеса, не трогая и не меняя исходные данные в редаксе
Anonymous
Ибо на сколько я понимаю смысл хоков, они не изменят данные, а добавляют свойства
Ну у меня фильтры и так там. Ну просто выглядело как то не феншуйно эта огромная функция в компоненте. Ну да вроде порефакторил и норм
Олександр
Всем привет. Может кто знает, что за значок?
Віталія
Всем привет. Может кто знает, что за значок?
Еще бы знать...что за DOM в скрине твоем ))
Олександр
Короче проект написан на Zend Framework. Нигде такого значка нет, а на этом файле есть. Я уже было подумал, что латиница в название файла проскочила, но нет
Олександр
@vita_milaeva , да вы поэт)) Я уже кофе сварил, а вы еще пишете))