Size: a a a

React — русскоговорящее сообщество

2020 October 30

S

Stanislav in React — русскоговорящее сообщество
Vladimir Klimov
Так и вижу, как вам говорят: "Нужен Redux", а вы такой - "Подержите мой чай", становитесь в офисе на табуреточку, и всей команде (вместе с бедными бекендерами) объявляете - "ребята, теперь у нас будет graphql вместо Redux!"😂
И начинаете все переписывать)
надо подготовить людей к переходу, сначала недельку две активно рекламировать всеми возможными способами чтобы потом было проще продать
источник

И

Иван in React — русскоговорящее сообщество
Stanislav
надо подготовить людей к переходу, сначала недельку две активно рекламировать всеми возможными способами чтобы потом было проще продать
Главное — научиться отвечать на вопросы по теме. Не очень просто рекламировать то, в чем разбираешься только на треть
источник

G

GetMad in React — русскоговорящее сообщество
Daniel Mednikov
Окей, я неправильно выразился. Если скажут выбрать редукс или аполло графкл-надо брать графкл
Тебе скорее всего больше всего нравятся фичи apollo, которые не связаны непосредственно с gql - кэш, дедубликация запросов, отслеживание состояния запроса и все такое. Это не связано с graphql и есть либы которые позволяют тоже самое с рестовыми апихами проворачивать. Например react-query или react-swr
источник

SH

Sirenes Help in React — русскоговорящее сообщество
Парни, возможно задам максимально нубский вопрос или даже слишком всрато, но всё что попробовал сделать - выходит не то.

Есть компонент Textare.
Я передаю в этот компонент данные с сервера по дэфолту, указывая

<Textarea title={'Описание'}
                      placeholder={'Описание '}
                      defaultValue={description}
                      ref={register({required: true})}
                      name="description"
                      errors={errors}
/>

Всё круто, текст отображается...
Выделяю этот текст и удаляю. Он удаляется. Но placeholder не отображается.

Если укажу в самом компоненте

const [value, setValue] = useState(props.defaultValue || props.value || ' ' );

const handleChange = e => {
       setValue(e.target.value);
       props.onChange && props.onChange();
};

<textarea {...props}
                         disabled={props.disabled}
                         value={value}
                         defaultValue={value}
                         placeholder={props.placeholder || props.title}
                         onChange={handleChange}
                         style={inputStyle}
                         ref={ref}
/>

Всё удаляется нормально, placeholder появляется - идеально и все как надо, НО!

В консоли выходит сообщение:
Warning: ForwardRef contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props.

Использую также react-hook-form, мб кроме меня самого и в нем проблема?
источник

BB

Bugs Bunny in React — русскоговорящее сообщество
Sirenes Help
Парни, возможно задам максимально нубский вопрос или даже слишком всрато, но всё что попробовал сделать - выходит не то.

Есть компонент Textare.
Я передаю в этот компонент данные с сервера по дэфолту, указывая

<Textarea title={'Описание'}
                      placeholder={'Описание '}
                      defaultValue={description}
                      ref={register({required: true})}
                      name="description"
                      errors={errors}
/>

Всё круто, текст отображается...
Выделяю этот текст и удаляю. Он удаляется. Но placeholder не отображается.

Если укажу в самом компоненте

const [value, setValue] = useState(props.defaultValue || props.value || ' ' );

const handleChange = e => {
       setValue(e.target.value);
       props.onChange && props.onChange();
};

<textarea {...props}
                         disabled={props.disabled}
                         value={value}
                         defaultValue={value}
                         placeholder={props.placeholder || props.title}
                         onChange={handleChange}
                         style={inputStyle}
                         ref={ref}
/>

Всё удаляется нормально, placeholder появляется - идеально и все как надо, НО!

В консоли выходит сообщение:
Warning: ForwardRef contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props.

Использую также react-hook-form, мб кроме меня самого и в нем проблема?
Ну для начала там английским языком сказано достаточно информативно, что defaultValue и value нельзя использовать вместе
источник

SH

Sirenes Help in React — русскоговорящее сообщество
Bugs Bunny
Ну для начала там английским языком сказано достаточно информативно, что defaultValue и value нельзя использовать вместе
это я как вариант (плохой) использовал, который какбы работает но выдает ошибку. а в остальных случаях placeholder не показывается после удаления.
источник

BB

Bugs Bunny in React — русскоговорящее сообщество
Sirenes Help
это я как вариант (плохой) использовал, который какбы работает но выдает ошибку. а в остальных случаях placeholder не показывается после удаления.
А по поводу плейсхолдера — хз. Как будто что-то упускаешь или где-то напортачил. По коду все вроде норм.
Есть подозрения, что твой плэйсхолдер как-то императивно по рефам перезаписывается. Чекай дом-ноды уже отрисованные. Есть ли там он
источник

HF

Hp Freake in React — русскоговорящее сообщество
источник

BB

Bugs Bunny in React — русскоговорящее сообщество
Sirenes Help
Парни, возможно задам максимально нубский вопрос или даже слишком всрато, но всё что попробовал сделать - выходит не то.

Есть компонент Textare.
Я передаю в этот компонент данные с сервера по дэфолту, указывая

<Textarea title={'Описание'}
                      placeholder={'Описание '}
                      defaultValue={description}
                      ref={register({required: true})}
                      name="description"
                      errors={errors}
/>

Всё круто, текст отображается...
Выделяю этот текст и удаляю. Он удаляется. Но placeholder не отображается.

Если укажу в самом компоненте

const [value, setValue] = useState(props.defaultValue || props.value || ' ' );

const handleChange = e => {
       setValue(e.target.value);
       props.onChange && props.onChange();
};

<textarea {...props}
                         disabled={props.disabled}
                         value={value}
                         defaultValue={value}
                         placeholder={props.placeholder || props.title}
                         onChange={handleChange}
                         style={inputStyle}
                         ref={ref}
/>

Всё удаляется нормально, placeholder появляется - идеально и все как надо, НО!

В консоли выходит сообщение:
Warning: ForwardRef contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props.

Использую также react-hook-form, мб кроме меня самого и в нем проблема?
Может быть, когда делаешь регистер, надо передать плейсхолдер тоже?
источник

BB

Bugs Bunny in React — русскоговорящее сообщество
Ну это так, навскидку. Я не уверен
источник

И

Иван in React — русскоговорящее сообщество
Hp Freake
Замыкание
источник

HF

Hp Freake in React — русскоговорящее сообщество
Здравствуйте, я не могу понять, почему при нажатии на кнопку Got it,  cookiesHandler() не меняет значение
источник

И

Иван in React — русскоговорящее сообщество
Hp Freake
Здравствуйте, я не могу понять, почему при нажатии на кнопку Got it,  cookiesHandler() не меняет значение
Потому что не должно и не может. Это константа
источник

BB

Bugs Bunny in React — русскоговорящее сообщество
Sirenes Help
Парни, возможно задам максимально нубский вопрос или даже слишком всрато, но всё что попробовал сделать - выходит не то.

Есть компонент Textare.
Я передаю в этот компонент данные с сервера по дэфолту, указывая

<Textarea title={'Описание'}
                      placeholder={'Описание '}
                      defaultValue={description}
                      ref={register({required: true})}
                      name="description"
                      errors={errors}
/>

Всё круто, текст отображается...
Выделяю этот текст и удаляю. Он удаляется. Но placeholder не отображается.

Если укажу в самом компоненте

const [value, setValue] = useState(props.defaultValue || props.value || ' ' );

const handleChange = e => {
       setValue(e.target.value);
       props.onChange && props.onChange();
};

<textarea {...props}
                         disabled={props.disabled}
                         value={value}
                         defaultValue={value}
                         placeholder={props.placeholder || props.title}
                         onChange={handleChange}
                         style={inputStyle}
                         ref={ref}
/>

Всё удаляется нормально, placeholder появляется - идеально и все как надо, НО!

В консоли выходит сообщение:
Warning: ForwardRef contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props.

Использую также react-hook-form, мб кроме меня самого и в нем проблема?
еще есть вот такие приколы
источник

V

Viktor in React — русскоговорящее сообщество
Иван
Потому что не должно и не может. Это константа
Ты о чем, там же локальный стейт через useState()
источник

HF

Hp Freake in React — русскоговорящее сообщество
Иван
Потому что не должно и не может. Это константа
Оно меняет но только при повторном вызове
источник

HF

Hp Freake in React — русскоговорящее сообщество
источник

t

twilly in React — русскоговорящее сообщество
Hp Freake
потому что ты получаешь старое значение
источник

BB

Bugs Bunny in React — русскоговорящее сообщество
Hp Freake
Оно меняет но только при повторном вызове
setState асинхронный. значение "изменится" только на следующем рендере
источник

И

Иван in React — русскоговорящее сообщество
Viktor
Ты о чем, там же локальный стейт через useState()
источник