私は現在、プレゼンテーションコンポーネントとコンテナコンポーネントを使用して流星のチュートリアルをリファクタリングしようとしていますが、機能的なステートレスコンポーネントの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"
/>
)
}
}
ref30を使用して、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'はステートフルコンポーネント内からのみアクセス可能です。 –
このような参照は使用できません。 textInputが存在しない別のコンポーネントの中で 'this.ref'を実行しています。 – jzm