input
我目前正在尝试使用演示和容器组件重构流星的 simple-todos 教程,但在尝试访问功能性无状态组件中的 refs 时遇到了问题。我发现要访问refs
,您必须将组件包装在一个有状态的组件中,我对input
.
// import React ...
import Input from './Input.jsx';
const AppWrapper = (props) => {
// ... more lines of code
<form className="new-task" onSubmit={props.handleSubmit}>
<Input />
</form>
}
import React, { Component } from 'react';
这个输入应该是有状态的,因为它使用类语法,至少我认为。
export default class Input extends Component {
render() {
return (
<input
type="text"
ref="textInput"
placeholder="Type here to add more todos"
/>
)
}
}
我使用 refs 在包含的内容中搜索输入的值AppContainer
。
import AppWrapper from '../ui/AppWrapper.js';
handleSubmit = (event) => {
event.preventDefault();
// find the text field via the React ref
console.log(ReactDOM.findDOMNode(this.refs.textInput));
const text = ReactDOM.findDOMNode(this.refs.textInput).value.trim();
...
}
console.log 的结果是null
,所以我的 Input 组件不是有状态的吗?我是否需要设置一个构造函数来设置一个值this.state
来使这个组件有状态,或者我应该在需要使用时放弃使用功能性无状态组件refs
?