如何用reactjs修复“期望在箭头函数中返回值”?

时间:2020-06-30 08:37:37

标签: javascript reactjs object eslint arrow-functions

我的react-app组件有两个功能

componentDidMount() {
        if(Object.keys(this.props.praticiens).length>0)
            Object.keys(this.props.praticiens).map((praticien) => {
                if(this.props.praticiens[praticien].identifiant_user === getUrlParams(window.location.hash).identifiant_user)
                    this.setState({
                        praticien:this.props.praticiens[praticien].id_user
                    })
            })
    }

    handleChangePraticien = (praticien) => {
        this.setState({ praticien }, () => {
            Object.keys(this.props.praticiens).map((praticien) => {
                if(this.state.praticien === this.props.praticiens[praticien].id_user)
                    this.props.selectPraticienFunction(this.props.praticiens[praticien].identifiant_user);
            })
        })
    }

运行它,我得到:

Line 26:64:  Expected to return a value in arrow function  array-callback-return
  Line 36:64:  Expected to return a value in arrow function  array-callback-return

第26行在componentDidMount上Object.keys(this.props.praticiens).map((praticien) => {开始,而第36行在handleChangePraticien函数上是同一行

我该如何解决?

4 个答案:

答案 0 :(得分:2)

您正在使用map,就好像它是forEach。除非您要使用它根据回调的返回值创建的数组,否则不要使用map。使用forEachfor-of或其他任何方法来遍历this answer中描述的数组。

答案 1 :(得分:2)

Array.prototype.forEach()和Array.prototype.map()用于两个不同的目的。

  • Array.prototype.forEach()

Array.prototype.forEach用于简单地遍历数组的项目,但不返回任何特殊值。它的签名是:

forEach(callback, [thisArg]) => undefined

只有第一个参数callback是强制性的,并且其签名是(current [, index, array]) => void,其中唯一必需的参数是current

示例

[1,2,3].forEach( item => console.log(item))
// Output 1 2 3 undefined
  • Array.prototype.map()

此功能主要用于从另一个创建新的Array。与forEach函数不同,它返回一个Array。其签名如下:

forEach(callback [, thisArg]) => Array。 就像forEach一样,只有第一个参数是强制性的,但回调签名却不同:(current [, index, array]) => any。 最终数组将包含每次迭代后回调函数返回的每个值。

示例

[1,2,3].map(item => item ** 2)
// Output [1 4 9]

那里的更多信息:

Array.prototype.forEach()

Array.prototype.forEach()

答案 2 :(得分:2)

将{}更改为()对我有用

map(() => {})map(() => ())

答案 3 :(得分:1)

第26:64行:预计将在箭头函数array-callback-return中返回一个值

由于您不关心从箭头函数返回值,并且不使用map()返回的数组,因此应该使用forEach()函数。

componentDidMount() {
        if(Object.keys(this.props.praticiens).length>0)
            Object.keys(this.props.praticiens).forEach((praticien) => {
                if(this.props.praticiens[praticien].identifiant_user === getUrlParams(window.location.hash).identifiant_user)
                    this.setState({
                        praticien:this.props.praticiens[praticien].id_user
                    })
            })
    }

    handleChangePraticien = (praticien) => {
        this.setState({ praticien }, () => {
            Object.keys(this.props.praticiens).forEach((praticien) => {
                if(this.state.praticien === this.props.praticiens[praticien].id_user)
                    this.props.selectPraticienFunction(this.props.praticiens[praticien].identifiant_user);
            })
        })