0

入力ボックスを持つ反応コンポーネントがあります。入力ボックスにフォーカスを設定するために componentDidUpdate を使用しました。しかし、私のテストは typeError で失敗しています。以下は私のコードです。テストに合格するのを手伝ってください。あなたより!!これは私の反応コンポーネントです `

public inputBox: any;

    componentDidUpdate = () => {
        this.inputBox.focus();
      }

    <div>
                <input

                  ref = {element => this.inputBox = element}
                  />
    </div>

` コンポーネントが更新されると、テストは失敗します。私にこのエラーを与える

TypeError:未定義のプロパティ「フォーカス」を読み取れません

ここで何が悪いのか教えてくれる人はいますか?

4

1 に答える 1

0

公式ドキュメントに基づく:

参照されたコンポーネントがアンマウントされ、ref が変更されるたびに、null を引数として古い ref が呼び出されることに注意してください。これにより、2 番目の例のように、インスタンスが格納されている場合のメモリ リークが防止されます。また、ここの例のようにインライン関数式で ref を記述する場合、React は毎回異なる関数オブジェクトを参照するため、更新のたびに、コンポーネント インスタンスで呼び出される直前に ref が null で呼び出されることに注意してください。

入力がアンマウントされたときに ref コールバックが渡さnullれると思います (おそらく、テストが終了して別のテストが開始されたときに発生します)。ドキュメントのように、要素に焦点を合わせたい場合は、null をテストするだけでよいと思います。

<TextInput ref={function(input) {
    if (input != null) {
        input.focus();
    }
}} />
于 2016-05-31T07:44:58.227 に答える