【发布时间】:2021-08-20 02:42:49
【问题描述】:
当我调用挂钩回调函数“setSearchResults”来设置状态时,我收到“对象作为 React 子项无效”错误。状态值是一个包含对象的数组,但我不确定为什么会收到此错误以及如何解决它。
function WikiSearch() {
const [searchKeyword, setSearchKeyword] = useState('');
const [searchResults, setSearchResults] = useState([]);
function onSearchChangeHandle(event = "") {
let term = event.target.value;
setSearchKeyword(term);
getSearchResult(term);
}
async function getSearchResult(term) {
const url = 'https://en.wikipedia.org/w/api.php';
try {
const {data} = await axios.get(url, {
params: {
action: 'query',
origin: '*',
format: 'json',
list: 'search',
srsearch: term
}
});
// search is an array having objects
setSearchResults(data.query.search); // => causing error
} catch (error) {
console.error(error);
}
}
const listData = searchResults.map((search ) => {
return (
<Fragment key={search.pageid}>
<div>
<span>
{search.title}
</span>
</div>
<div>
<span>
{search.snippet}
</span>
</div>
</Fragment>
)
});
return (
<div>
<div className="ui form">
<div className="field">
<label>Search</label>
<input className="input" type="text" name="search" value={searchKeyword} onChange={(e) => onSearchChangeHandle(e) }/>
</div>
</div>
{listData}
</div>
)
}
我想遍历这些搜索结果并在列表中显示数据。大概 search.title 和 search.sn-p。
【问题讨论】:
-
你需要解构你的对象以便在渲染中显示它
-
你想用这个对象完成什么?转成html还是只显示为文本?
标签: javascript reactjs react-hooks