2016-12-30 4 views
2

Для eample:React: Могу ли я передавать значения состояния по умолчанию компонента через реквизиты?

<Counter start="10"> 

... 

export default class Counter extends React.Component { 

    constructor(props) { 

     super(); 

     this.state = { 
      start: props.start 
     }; 
    } 
} 

Я гугл этого вопроса, и я получил представление о том, что ответы, которые я нашел являются устаревшими

Вопросов на StackOverflow

Но я нашел этот пост в блоке React: React v0.13.0 Beta 1

И в этом посте автор делает именно то, что я хочу, как я понимаю getDefaultProps теперь устарел.

Вопрос: Проходит ли состояние через опоры по-прежнему анти-шаблон?

+0

Да, это так. Сообщите, зачем вам это нужно, и мы можем найти альтернативу. –

+0

Пример в вопросе: у меня есть счетчик, и мне нужно передать начальное состояние компоненту. Как это сделать, если не через свойства ... – SmxCde

ответ

0

IMHO «да», потому что создается впечатление, что изменение значения prop изменит поведение компонента, которого не произойдет. При изменении начального параметра ваш компонент будет вести себя точно так же.

Впечатления прохладные, но потребности реальны. Иногда, когда мне нужен этот тип поведения, я просто называю свою опору соответственно initialFoo или defaultBar.

+0

Но могут быть сценарии, в которых изменение переменной состояния (которая получила свое начальное значение через реквизиты) изменяет поведение компонента. В таких случаях не было бы этого пути – Swapnil

+0

Да, это было то, что я имел в виду, когда я сказал, что «потребности реальны»; извините, если это было кратким. Потребность есть; например, когда вы хотите реализовать какое-то поведение, которое напоминает поведение неконтролируемых компонентов, где вы предоставляете только значение defaultValue через реквизиты. Я рекомендую иметь соглашение об именах для этих типов реквизитов, хотя ... –

+0

Oh. Я совершенно неправильно понял. : p – Swapnil

Смежные вопросы