如何将反应状态中的值作为变量包含在 API 调用中作为查询参数的一部分

用户10220899

我正在进行 API 调用,它接受一个查询参数,我想将参数作为状态值输入,但我无法使用 ${this.state.mySearch} 作为查询参数的变量。

我曾尝试在 google 上搜索并在聊天室中寻求帮助,并在代码上搞砸了很多。


    state = {
        mySearch: 'apple'
      }
    ...

    ///This API call is defined outside of the main class component(not sure if that is ok)

    Index.getInitialProps = async function() {
      const res = await fetch(
        `https://newsapi.org/v2/everything?q=${this.state.mySearch}&apiKey=(privateApikey`
      )
      const data = await res.json()

      return {
        headlines: data
      }
    }

我希望使用处于 state 的值进行 API 调用,我打算创建一个搜索表单,然后允许用户将值传递给 state,然后该值将用作 API 调用中的变量。

我的错误信息是:

TypeError: Cannot read property 'mySearch' of undefined
Function._callee$
./pages/index.js:52
  49 |   }
  50 | }
  51 | 
> 52 | Index.getInitialProps = async function() {
  53 |   const res = await fetch(
  54 |     `https://newsapi.org/v2/everything?q=${this.state.mySearch}&apiKey=(myPrivateApiKey)`
  55 |   )
很酷的家伙

它是在组件类之外定义的,这正是您无法运行 API 调用的原因。

您需要在组件内的事件处理程序中定义它,就像这样

class Example extends React.Component{
   state = {
      search: "",
      headlines: ""
   }

   handleOnChange = (event) => {
      this.setState({
        search: event.target.value
      })
   }

   handleOnSubmit = async (event) => {
       event.preventDefault()
       const res = await fetch(
       `https://newsapi.org/v2/everything?q=${this.state.search}&apiKey=(privateApikey`)
       const data = await res.json()

       this.setState({
          headlines: data
       })
   }

   render(){
     return(
     <form onSubmit={this.handleOnSubmit}>
         <input onChange={this.handleOnChange} value={this.state.search}/>
     </form>
    )
   }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在$ resource的Angular中对API的$ resource GET调用中,使用[]方括号作为参数的一部分不起作用

作为AJAX成功函数的一部分,从API调用发送PHP的JSON响应

尝试在 Swift 3.0 中访问数组作为 JSON api 的一部分

在BigQuery中作为UDF的一部分进行API调用-可以吗?

在Azure API管理中,我可以将订阅密钥用作请求标头的一部分而不是查询字符串参数吗?

Identity Server作为Web API或单独应用程序的一部分

返回多行字符串作为REST API的一部分

将参数作为查询字符串或 url 的一部分传递?

在列别名中包含参数作为字符串的一部分

如何在包含多个词典的列表的一部分的词典中查找键的值。(从api中拉出

oracle 动态查询问题:如何将值放入作为字符串一部分的变量中

如何将获取到的API的一部分添加到component中定义的数组中

作为使用SPO REST API的一部分,要为“ ViewFields”参数发送的有效载荷是什么?

通过Rest调用在json中传递fk作为DerivedIdentities的一部分

哪些 Linux 命令包含在 shell 中或作为 shell 的一部分?

在Android版Google Maps API中仅显示kml文件的一部分

如何在余烬应用程序中将api密钥作为url的一部分传递

如何从api的一部分接收数据到另一部分

作为结构调用的一部分,如何在一行中编写变量名称?

Symfony2,在Ajax查询中调用表单的一部分

如何修复Youtube Data API v3必需参数:Axios请求和React.js中的一部分

将标签和功能文件参数作为 Karate.Runner 的一部分传递(Java 调用)

作为类函数一部分的 SQL 查询中的 PHP 变量未按预期工作

如何使用函数参数作为变量的一部分?

Promise 作为 redux 状态的一部分

SPARK SQL 中的相关子查询列不允许作为非等式谓词的一部分

Hibernate分离查询作为条件查询的一部分

Golang查询字符串作为查询的一部分

在折叠表达式中扩展参数包作为Lambda捕获的一部分-GCC与Clang