Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从搜索功能获取正确的数据_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 无法从搜索功能获取正确的数据

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

当我在组件状态下编写搜索函数时,我得到了预期的结果。例如,我查询了GoogleBooksAPI,搜索了Halo。我得到了我所期待的,像光环:到达的下降,光环:洪水。。。等等

但是,当我将搜索函数移到Redux中时,无论我搜索什么,都会返回相同的错误数据。这是怎么发生的

这就是我在redux的行动

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请求。