Я читал в этой статье Реагирует медленно, быстро реагирует: на практике оптимизируем приложения React , что:
Фактически, каждый раз, когда вы передаете объект, буквальный как опорудля дочернего компонента вы нарушаете чистоту.
Хорошо, я понял.Поэтому лучше всего избегать создания переменной с объектом и вставки этой переменной в реквизит, например:
import React from 'react';
const style = { marginTop: 10 };
const AnyComponent = (props) => (
<div style={style}>
...
</div>
)
Но что, если реквизит стиля зависит от полученной реквизита?Где должен быть объект?Так, например, у меня есть этот компонент:
import React from 'react';
const AnyComponent = (props) => (
<div style={{ marginTop: props.marginTop }}>
...
</div>
)
Это хорошая практика, чтобы сделать:
import React from 'react';
const style = (marginTop) => ({ marginTop })
const AnyComponent = (props) => (
<div style={style(props.marginTop)}>
...
</div>
)
[ПРАВИТЬ] Я забыл сказать, что большинство моих компонентов имеют состояние,так что в этом случае, это хорошая идея сделать:
import React from 'react';
class App extends React.Component {
style = () => ({
marginTop: this.props.marginTop
})
render() {
return(
<div style={this.style()}>
</div>
)
}
}