配列のinput
リストがあり、配列のリストの入力を開始すると、に対応するフィルターが適用されますvalue
。機能しinput
ますが、文字を入力した後、フォーカスが緩んでしまいます。
私のコード:
const MyPage = (props) => {
const [searchTerm, setSearchTerm] = useState("");
const results = !searchTerm
? people
: people.filter(person =>
person.toLowerCase().includes(searchTerm.toLocaleLowerCase())
);
const handleChange = event => {
setSearchTerm(event.target.value);
};
const Desktop = ({ children }) => {
const isDesktop = useMediaQuery({ minWidth: 992 })
return (
isDesktop?
<View>
<input
type="text"
placeholder="Search"
value={searchTerm}
onChange={handleChange}
/>
<View style={{width:100, height:100, backgroundColor:'red'}}>
{results.map(item => (
<Text>{item}</Text>
))}
</View>
</View>
:null
)
}
return(
<View style={{width:'100%',justifyContent:'center'}}>
<Desktop/>
</View>
)
}
<Desktop/>
直接入れれば帰る代わりに
<input
type="text"
placeholder="Search"
value={searchTerm}
onChange={handleChange}
/>
<View style={{width:100, height:100, backgroundColor:'red'}}>
{results.map(item => (
<Text>{item}</Text>
))}
</View>
それが動作します。この問題を解決する方法はありますか?
アドバイスやコメントをいただければ幸いです!
前もって感謝します!
isDesktop変数をコンポーネントスコープの外に置き、useCallbackを使用してhandleChange関数をラップすると思います
—
Harish Jangra
@HarishJangraコメントのおかげで、私は今useCallbackについてあまり詳しくありません。
—
キリミ