我正在尝试使用React js中的useMemo钩子。根据函数,我们正在对包含字符串的数组进行排序。但是,当从函数返回数组时,它只是返回数组的第一个元素。您能帮助我理解我在其中做错了什么吗?
import { useState } from "react";
import { useMemo } from "react";
export default function MemoExample2() {
const [nameList, setNameList] = useState(['a', 'b', 'r', 'e']);
const [sortedList] = useMemo(() => {
console.log([...nameList].sort());
return [...nameList].sort();
}, [nameList]);
function addLetter(e) {
console.log()
const letter = document.querySelector("#letter").value;
setNameList([...nameList, letter]);
}
return <>
<div>Unsorted: {nameList.join(' ,')}</div>
<div>Sorted: {sortedList.join(',')}</div>
<input type="text" id="letter" />
<button onClick={addLetter}>Add Name</button>
</>
}
输出应该是打印在HTML文档上的排序数组。
1条答案
按热度按时间2hh7jdfx1#
2代码存在问题。
1.正如@Nick所说,您将变量用作数组,并且从useMemo返回单个元素,而不是数组[]。
1.另外,不要在React中使用document.querySelector,应该使用
useRef
。下面是解决了两个问题的示例代码,它可以正常工作。