Я следую учебнику, чтобы понять, как работает React.js
. Я застрял, используя ссылки для доступа к компонентам. Если кто-то не возражает против того, чтобы посмотреть мой код и сказать мне, где я ошибаюсь. Но это то, что я сделал. У меня есть общий компонент App
и html Input
тег, который обновляет refs
в State
. Но, я не знаю, почему он все еще показывает undefined
Использование refs для доступа к компонентам в React
import React from 'react';
import ReactDOM from 'react-dom';
class App extends React.Component {
constructor() {
super();
this.state = {
red: 0,
green: 0,
blue: 0
}
this.update = this.update.bind(this);
}
//To manage the state
update(e) {
this.setState({
red: ReactDOM.findDOMNode(this.refs.red.refs.inp).value,
green: ReactDOM.findDOMNode(this.refs.green.refs.inp).value,
blue: ReactDOM.findDOMNode(this.refs.blue.refs.inp).value
})
console.log(this.state); //<This is giving me Object {red: undefined, green: undefined, blue: undefined}
}
render() {
return (
<div>
<Slider ref="red" update={this.update}/>
{console.log(this.state.red)} // This is undefined
{this.state.red}
<br />
<Slider ref="green" update={this.update}/>
{console.log(this.state.green)} // This is undefined
{this.state.green}
<br />
<Slider ref="blue" update={this.update}/>
{console.log(this.state.blue)} // This is undefined
{this.state.blue}
<br />
</div>
)
}
}
//Working with refs. Refs are a way of referencing components within our react application
class Slider extends React.Component {
render() {
return (
<div>
<input ref="inp" type="range" min="0" max ="255" onChange={this.props.update}/>
</div>
)
}
}
ReactDOM.render(
<App />, document.getElementById('app')
);
export default App;
Вы говорите, что он читает refs, объявленные в родном браузере, а не тот, который обновляется? –
Думаю, я сейчас понимаю. Обновлен ваш ответ. Дал 'input'' 'ref' –