【发布时间】:2020-05-14 05:12:22
【问题描述】:
伙计们,我需要帮助来发出 API 搜索请求,该请求应在页面准备就绪时完成。 这是状态对象:
const [state, setState] = useState({
s: "",
results: [],
selected: {}
});
const apiurl = ....;
这就是我的搜索输入的实际工作方式:
const search = (e) => {
if (e.key === "Enter") {
axios(apiurl + "&s=" + state.s).then(({data}) => {
let results = data.Search;
setState(prevState => {
return {...prevState, results: results }
});
});
}
}
const handleInput = (e) => {
let s = e.target.value;
setState(prevState => {
return { ...prevState, s: s }
});
}
我的组件:
return (
<div className='basic'>
<Header />
<Search handleInput={handleInput} search={search} />
<Container>
<Results results={state.results} openPopup={openPopup} />
{(typeof state.selected.Title != "undefined") ? <Popup selected={state.selected} closePopup={closePopup} /> : false }
</Container>
</div>
);
Search.js:
function Search ({ handleInput, search})
return (
<Container bg="dark" variant="dark">
<section className="searchbox-wrap">
<input
type="text"
placeholder="Поиск фильма"
className="searchbox"
onChange={handleInput}
onKeyPress={search}
/>
</section>
</Container>
)
Results.js:
function Results ({ results, openPopup }) {
return (
<section className="results">
{results.map(result => (
<Result key={result.imdbID} result={result} openPopup={openPopup} />
))}
</section>
);
}
那么我怎样才能在页面加载时完成搜索请求(例如:超人)?谢谢!
【问题讨论】:
-
请参阅:reactjs.org/docs/react-component.html#the-component-lifecycle。你需要
componentDidMount() -
您的
search函数似乎只有在按下"Enter"键时才会被调用。您的意思是要阻止search的调用,即使在您的页面仍在加载时按下了键? -
PLUS) 应将
"Enter"的按键事件与其事件值e.keyCode === 13进行比较。 -
@cadenzah 不是真的,我因此被卡住了,所以现在我尝试在不触及这个常量的情况下找出解决方案
-
@TimurIvanov 那么我认为你的
search没有太大问题,但可能你在 JSX 组件中放错了。为什么不将组件的代码放在问题中?
标签: javascript reactjs api