Допустим, что все три конфигурации компонентов ниже действительны:
<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
не кажется правильнымместо для этогоВы можете использовать его, чтобы сделать это, но вы в основном создаете свое собственное специальное решение для каждой опоры, которую вы хотите трансформировать, а также помните значение предыдущей опоры и т. Д. Есть ли системный/ идиоматический способ обработки реквизита перед его использованием?