【发布时间】:2021-01-25 00:14:04
【问题描述】:
console.log 确认用户输入“searchTerm”是通过 onClick 函数从组件中提取出来的。
然后保存到handleClick函数中的状态。
但它并没有通过到第二条路线。
function App() {
const [searchResults, setSearchResults] = useState([]);
const [searchTerm, setsearchTerm] = useState('')
const [single, setSingle] = useState();
const fetchData = async (searchTerm) => {
setsearchTerm(searchTerm)
try {
const { data } = await axios.get(`/data/${searchTerm}.json`)
console.log(data)
setSearchResults(data)
}
catch(err) {
const empty = [];
setSearchResults(empty)
console.log(err)
}
}
下一步,将 props 传递给“SearchResultSingle”组件,也就是第二条路线
console.log 显示 'searchTerm' 从组件 onClick 升起,然后在下面的函数中保存到状态,但它没有传递到第二个路由。
const handleClick = data => {
console.log('click', data.clip)
setSingle(data.clip)
}
return (
<Router>
<div>
<SearchForm fetchData={fetchData}/>
<Child searchTerm={searchTerm} />
<Switch>
<Route
path="/"
render={props=>
<SearchResults {...props}
searchResults={searchResults}
searchTerm={searchTerm}
handleClick={handleClick}/>
}
/>
第二条路线,道具不通过
<Route
exact
path={`/${searchTerm}/:id`}
render={props=>
<SearchResultSingle {...props}
searchTerm={searchTerm}
searchResults={searchResults}
single={single}/>
}
/>
</Switch>
</div>
</Router>
);
}
export default App;
【问题讨论】: