首页 > 解决方案 > 带有对象参数的 React 函数抛出了一个意外的标记

问题描述

我有个问题。我在 React Native 中有以下功能。

const HandleConfirmApplication = async (
  opts: { 
    isInvite: boolean,
    confirmationCheckValues: () => any,
    confirmPopUp: () => any,
    loadingApply: () => any,
    decision: () => any,
    updateState: () => any
  }
) => {
  const { 
    isInvite,
    confirmationCheckValues,
    confirmPopUp,
    loadingApply,
    decision,
    updateState 
  } = opts; //then do stuff

当我尝试调用它时,我将其称为:

onConfirm={async () =>
                HandleConfirmApplication({ 
                  opts.isInvite: true,
                  opts.confirmationCheckValues: this.props.confirmationCheckValues,
                  opts.confirmPopUp: this.props.onToggleConfirmPopUp,
                  opts.loadingApply: this.props.onToggleLoadingApply,
                  opts.decision: this.handleShiftInviteDecision('ACCEPT'),
                  opts.updateState: null

                })
              }

如果我删除对象并正常调用它们,它可以工作,但是当我尝试更新对象以便我可以将函数参数作为对象时,它会在每一行上抛出一个错误,说 Unexpected token ',' expected ','

标签: javascriptreactjsreact-native

解决方案


属性名称中有 a.在 JavaScript 中无效:

console.log({
  opts.isInvite: 'example'
})

您应该自己传递参数:

HandleConfirmApplication({
  isInvite: ...,
  // ... rest of params
})


请注意,从技术上讲,.如果将属性名称括在引号中,则可以在属性名称中包含 a ,但这会给您的特定代码带来不正确的行为,因为您没有使用该格式声明的任何属性。

console.log({
    'opts.isInvite': 'this is fine'
})


推荐阅读