Javascript 无法从搜索功能获取正确的数据
当我在组件状态下编写搜索函数时,我得到了预期的结果。例如,我查询了GoogleBooksAPI,搜索了Halo。我得到了我所期待的,像光环:到达的下降,光环:洪水。。。等等 但是,当我将搜索函数移到Redux中时,无论我搜索什么,都会返回相同的错误数据。这是怎么发生的 这就是我在redux的行动Javascript 无法从搜索功能获取正确的数据,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,当我在组件状态下编写搜索函数时,我得到了预期的结果。例如,我查询了GoogleBooksAPI,搜索了Halo。我得到了我所期待的,像光环:到达的下降,光环:洪水。。。等等 但是,当我将搜索函数移到Redux中时,无论我搜索什么,都会返回相同的错误数据。这是怎么发生的 这就是我在redux的行动 export const searchedBooks = search => async dispatch => { const url = `https://www.googleapi
export const searchedBooks = search => async dispatch => {
const url = `https://www.googleapis.com/books/v1/volumes?q=${search}&orderBy=relevance&maxResults=30&key=API_KEY`;
try {
const res = await axios.get(url, {
transformRequest: [
(data, headers) => {
delete headers["access-token"];
delete headers["uid"];
delete headers["client"];
delete headers["expiry"];
delete headers["token-type"];
delete headers.common;
return data;
}
]
});
dispatch({
type: SEARCH_BOOKS,
payload: res.data
});
} catch (error) {
dispatch({
type: GET_ERRORS,
payload: error.response.data
});
}
};
在我将其应用于行动之前,我在React中进行了测试。这和我用的代码差不多。我相信错误来自${search}。我不知道模板文本在Redux中是否工作相同
进行搜索的组件
class Search extends Component {
state = {
search: "",
books: []
};
componentWillReceiveProps(nextProps) {
if (nextProps.errors) {
this.setState({ errors: nextProps.errors });
}
}
searchBooks = e => {
e.preventDefault();
this.props.searchedBooks();
};
onChange = e => {
this.setState({ [e.target.name]: e.target.value });
};
render() {
console.log(this.props.books);
return (
<div>
<h1>hi from search</h1>
<form>
<input
onChange={this.onChange}
type="text"
name="search"
placeholder="Title or Author(s)"
value={this.state.search}
/>
<button onClick={this.searchBooks}>Search</button>
</form>
</div>
);
}
}
const mapStateToProps = state => ({
books: state.books
});
export default connect(
mapStateToProps,
{ searchedBooks }
)(Search);
类搜索扩展组件{
状态={
搜索:“,
书籍:[]
};
组件将接收道具(下一步){
if(nextrops.errors){
this.setState({errors:nextrops.errors});
}
}
searchBooks=e=>{
e、 预防默认值();
this.props.searchedBooks();
};
onChange=e=>{
this.setState({[e.target.name]:e.target.value});
};
render(){
console.log(this.props.books);
返回(
你好,来自搜索
搜寻
);
}
}
常量mapStateToProps=状态=>({
图书:国家图书
});
导出默认连接(
MapStateTops,
{搜索图书}
)(搜查);
您实际上没有将参数传递给this.props.searchedBooks
。您可能需要输入的值,因此只需将searchBooks
更新为:
searchBooks = e => {
e.preventDefault();
this.props.searchedBooks(this.state.search);
};
实际上,您并没有将参数传递给
this.props.searchedBooks
。您可能需要输入的值,因此只需将searchBooks
更新为:
searchBooks = e => {
e.preventDefault();
this.props.searchedBooks(this.state.search);
};
返回的数据在哪些方面不正确?无论搜索什么,我都会返回相同的数据。您熟悉Chrome开发工具中的“网络”选项卡吗?您可以查看请求URL吗?应该能够看到它的格式是否正确。啊,
${search}
在哪里,它现在表示未定义
。我感觉这是操作中的url请求。返回的数据以何种方式不正确?无论搜索什么,我都会返回相同的数据。您熟悉Chrome开发工具中的“网络”选项卡吗?您可以查看请求URL吗?应该能够看到它的格式是否正确。啊,${search}
在哪里,它现在表示未定义
。我有一种感觉,这是行动中的url请求。