[レスポンス,TS]を使用してRefを転送するときに発生するコンポーネント定義is missing displaynameの問題
9046 ワード
問題の状況
Reactを使用する場合は、内部HTML領域にアクセスできるようにrefをサブコンポーネントに渡す必要があります.このとき使用したのは
React.forwardRef
const Input = forwardRef((props, ref) => {
return <input type="text" ref={ref} />;
});
タイプスクリプトを使用しない場合、上記の方法は正常に動作します.ただし、タイプスクリプトを使用している場合は、上記のコードが投げ出されますComponent definition is missing display name
エラーです.(forwardRef()
関数を呼び出すときに匿名関数をスキップした場合、ブラウザはreact developerツールを使用するときに構成部品の名前を与えないため、エラーと呼ばれます.)解決策
「react developer」ツールで、
forwardRef()
関数を使用して構成部品の名前を付ける方法:import React from "react";
interface InputProps {
// ...
}
// eslint-disable-next-line prefer-arrow-callback (린트 에러 무시를 위해 추가해야한다.)
const Input = React.forwardRef(function Input(props: InputProps, ref: React.Ref<HTMLInputElement>) {
return <input type="text" ref={ref} />;
});
export default Input;
forwardRef()
displayNameで関数呼び出しの結果を設定する方法import React from "react";
interface InputProps {
// ...
}
const Input = React.forwardRef((props: InputProps, ref: React.Ref<HTMLInputElement>) => {
return <input type="text" ref={ref} />;
});
Input.displayName = "Input";
export default Input;
import React from "react";
interface InputProps {
// ...
}
function Input(props: InputProps, ref: React.Ref<HTMLInputElement>) {
return <input type="text" ref={ref} />;
}
Input = forwardRef(Input);
export default Input;
参考文献
https://www.daleseo.com/react-forward-ref/
https://stackoverflow.com/questions/67992894/component-definition-is-missing-display-name-for-forwardref
Reference
この問題について([レスポンス,TS]を使用してRefを転送するときに発生するコンポーネント定義is missing displaynameの問題), 我々は、より多くの情報をここで見つけました https://velog.io/@dongkyun/React-TS-forwardRef-사용시-발생하는-Component-definition-is-missing-display-name-문제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol