我目前正在尝试使用表示和容器组件重构流星的简单教程教程,但遇到了试图访问功能无状态组件中的input
的引用的问题。我发现要访问refs
,你必须将组件包装在一个有状态的组件中,我使用input
。访问有状态组件中的ref在React中不起作用?
// 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"
/>
)
}
}
我用裁判的涵盖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
,所以我输入组件无状态的?我是否需要设置一个构造函数来为this.state
设置一个值来使这个组件成为有状态的,或者当我需要使用refs
时,我应该放弃使用无状态的功能组件?
'handleSubmit'定义在哪里?'ref'只能从有状态组件中访问。 –
你不能像这样使用裁判。你在一个单独的组件里面做'this.ref',其中textInput不存在。 – jzm