Реагировать: обновить состояние при изменении реквизита - PullRequest
0 голосов
/ 11 октября 2018

Допустим, что все три конфигурации компонентов ниже действительны:

<Arc radius="200"/>
<Arc radius="90% - 20"/>
<Arc radius={this.calcRadiusFn}/>

Сначала будет использовано абсолютное значение 200 для радиуса дуги.

Во-вторых, будет установлен радиус на 90% отрадиус по умолчанию (который получен из размера контейнера дуги) минус 20 пикселей.

В-третьих, для вычисления радиуса будет использоваться предоставленная функция calcRadiusFn (функция получает радиус по умолчанию и использует некоторую логику длявозвращаем некоторое производное значение).

Во всех трех случаях я действительно хотел бы преобразовать полученную radius опору в функцию:

1) (x) => 200
2) (x) => x * 0.9 - 20
3) (x) => Math.sqrt(x) + 42

, чтобы в методе render Iмог бы просто сделать:

const radius = this.radiusFn(defaultValue);
// or
const radius = this.state.radiusFn(defaultValue);

Я знаю, что есть getDerivedStateFromProps, и этим летом устаревшие способы устарели: https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

Но getDerivedStateFromProps не кажется правильнымместо для этогоВы можете использовать его, чтобы сделать это, но вы в основном создаете свое собственное специальное решение для каждой опоры, которую вы хотите трансформировать, а также помните значение предыдущей опоры и т. Д. Есть ли системный/ идиоматический способ обработки реквизита перед его использованием?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...