Атрибуты DOM и реакция
Я уже некоторое время использую веб-компоненты (в частности, полимер), и недавно пытаюсь разобраться с React. Я думал, что будет довольно много общего, хотя я не видел в React никакого способа повлиять на начальное состояние компонентов на основе атрибутов узла DOM, который он монтирует.
Возможно ли это, или я пропустил намерение React? Возможность настраивать компоненты таким способом кажется одним из наиболее очевидных способов облегчить повторное использование.
Спасибо,
1 ответ
React может получить доступ ко всем атрибутам узла DOM через this.props
, Вы можете установить состояние компонента React так, чтобы оно отражало значение начальных атрибутов, например:
class MyComponent extends React.Component {
constructor(props) {
super(props);
// here you intialize the state of the component with the value of myAttribute
this.state = {myAttribute: props.myAttribute};
}
render() {
return (
<div>
The value of myAttribute is: {this.state.myAttribute}
</div>
);
}
}
Теперь, если вы измените атрибут узла DOM и хотите, чтобы это изменение было отражено в состоянии, React предоставит вам метод жизненного цикла, который называется componentWillReceiveProps(nextProps)
в котором вы можете обновить состояние следующим образом:
class MyComponent extends React.Component {
constructor(props) {
super(props);
// here you intialize the state of the component with the value of myAttribute
this.state = {myAttribute: props.myAttribute};
}
componentWillReceiveProps(nextProps) {
// here you update the state with the new value of myAttribute
this.setState({myAttribute: nextProps.myAttribute});
}
render() {
return (
<div>
The value of myAttribute is: {this.state.myAttribute}
</div>
);
}
}
Вы можете найти JSFiddle с примером здесь http://jsfiddle.net/ko2jfqeL/