javascript - React 中的encodeURIComponent

标签 javascript reactjs

我有一个react函数从axios返回一个promise,我需要对传递给它的方程类型字符串进行编码。

const { equation } = this.state;
axios.post(`${this.state.rootUrl}/integrate`, { equation }).then(some other code)

我想在将字符串方程传递给 API 进行查询之前对其进行编码。

我尝试了以下方法,但没有成功。

axios.post(`${this.state.rootUrl}/integrate`, { encodeURIComponent(equation) })

我也尝试过这个:

const { equation } = this.state;
const { test } = encodeURIComponent(equation);
axios.post(`${this.state.rootUrl}/integrate`, { test }).then(some other code)

这也不起作用。

这是我尝试使用的函数的完整代码:

handleSubmit = (e) => {
    e.preventDefault();
    const { equation } = this.state;
    // const { test } = encodeURIComponent(equation);
    axios.post(`${this.state.rootUrl}/integrate`, { equation })
      .then((response) => {
        const data = response.data;
        this.setState({ data: data });
        console.log(equation);
        if (data != null) {
          this.setState({input: data.response[0]});
        }
    }
  }

最佳答案

在原始示例中,您使用简写语法来设置对象属性 - 以下两行代码是等效的:

{ equation }
{ equation: equation }

你的后两个例子没有做同样的事情!在示例二中,您尝试在方法调用中使用简写,但这是行不通的。在示例三中,您尝试解构 encodeURIComponent(equation) 的返回值,这不起作用(它返回一个字符串)。

Fawaz 的第一个示例几乎可以工作,但行为上有细微的差别 - 因为他们将变量命名为 test,传递给 Axios 的对象的键 进行测试。请记住,这些是等效的:

{ test }
{ test: test }

据推测,您的 API 需要的是名为 equation 的内容,而不是 test,因此这不起作用。

为了获得正确的行为,您应该确保您传递的对象具有正确的键:

const test = encodeURIComponent(equation);
axios.post(`${this.state.rootUrl}/integrate`, { equation: test })

// or

axios.post(`${this.state.rootUrl}/integrate`, { equation: encodeURIComponent(equation) })

关于javascript - React 中的encodeURIComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545158/

相关文章:

javascript - Android 4.0.3,window.openDatabase 不工作

javascript - 我们如何使用 jQuery 返回元素的 css 属性?

javascript - MVC 部分 View 中的 JQuery/JS?

javascript - 无法禁用youtube嵌入播放列表自动播放

reactjs - 如何仅在输入中搜索时显示数据?

javascript - 如何检查 Api 是否被触发以及如何中止 api 如果触发

node.js - Sequelize.op 未定义

javascript - 在 JEST-Enzyme 中编写测试用例,以便在构造函数中调用 Promise

javascript - JavaScript 支持哪些好的模板语言?

javascript - ParseReact.Mixin 如何监听 this.data 的更改?