Javascript “如何修复”;应在箭头函数“中返回一个值”;用reactjs?

Javascript “如何修复”;应在箭头函数“中返回一个值”;用reactjs?,javascript,reactjs,object,eslint,arrow-functions,Javascript,Reactjs,Object,Eslint,Arrow Functions,我的react应用程序组件中有两个功能 componentDidMount() { if(Object.keys(this.props.praticiens).length>0) Object.keys(this.props.praticiens).map((praticien) => { if(this.props.praticiens[praticien].identifiant_user === getUr

我的react应用程序组件中有两个功能

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.praticins).map((praticin)=>{,第36行是HandleChangePraticin函数上的同一行

如何修复它?

您正在使用它。除非您要使用它从回调的返回值创建的数组,否则不要使用
map
。请使用
forEach
for of
,或者使用中描述的许多其他方法循环数组

第26:64行:应在arrow函数数组回调返回中返回值

由于您不关心从arrow函数返回值,也不使用
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);
            })
        })


Array.prototype.forEach()和Array.prototype.map()用于两种不同的用途

  • Array.prototype.forEach()

Array.prototype.forEach用于简单地循环数组的项,但不返回任何特殊值。其签名为:

forEach(回调,[thisArg])=>未定义

只有第一个参数
callback
是必需的,其签名是
(当前[,索引,数组])=>void
,其中唯一需要的参数是
current

范例

  • Array.prototype.map()
此函数主要用于从另一个数组创建新的
数组
。与
forEach
函数不同,它返回一个
数组
。其签名如下:

forEach(回调[,thisArg])=>Array
。 就像
forEach
,只有第一个参数是必需的,但回调符号不同:
(当前[,索引,数组])=>any
。 最后一个数组将包含每次迭代后回调返回的每个值

范例

更多信息请参见:

将{}改为()对我来说很有效


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

您的if语句需要括号
{}
。只有当if语句中的行是单行时,才能删除它们。@blackgigant-单行语句,而不是单行。它们都是单行语句。(也就是说,我更喜欢总是使用
{}
关于控制流statmenets。)感谢您的解释
[1,2,3].forEach( item => console.log(item))
// Output 1 2 3 undefined
[1,2,3].map(item => item ** 2)
// Output [1 4 9]