首页 > 解决方案 > 带有动态内容 javascript 的 Alert()

问题描述

这有什么问题alert({s[prop]})但很好placeholder={s[prop]}

它说我在 's' 之后缺少一个 ',' 和 ':' 在 ']' 之后

标签: javascriptreactjsalert

解决方案


在 React 中,{ }属性周围的 s 本质上是表达式分隔符——它们表示括号之间的内容是一个表达式。所以,如果你有const str = 'foobar',那么:

placeholder={str}

评估为

placeholder='foobar'

但是,在 中alert,你不是在写 JSX——你是在写普通的 JS。在表达式上下文中,{表示对象字面量的开始。但以下不是有效的对象字面量:

const obj = {
  s[prop]
}

因为对象需要键和值(通常)。也许你想做

alert(s[prop])

对象字面量唯一不需要值的情况是当您使用速记语法时,当您在当前范围内有一个变量并且想要定义一个具有与该变量同名的属性的对象时,并且与变量相同的值,例如:

const str = 'foobar';
const obj = { str };

这会产生一个像{ str: 'foobar' }.

在任何其他情况下,除了值之外,您还需要定义属性名称,例如

{ somePropertyName: s[prop] }

推荐阅读