谜语:
这个alert({s[prop]})
怎么了,但是这个placeholder={s[prop]}
提示不是:它说我在s后面缺少一个“,”,在]之后缺少“:”
答案 0 :(得分:1)
在React中,属性周围的{
}
s实际上是表达式定界符-它们表示括号之间的是 expression 。因此,如果您有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] }
答案 1 :(得分:0)
警报(s ['使用您的密钥'])
请以这种方式使用。避免在alert()中使用{},如果使用{},则会看到[object Object]而不是实际的动态内容。
答案 2 :(得分:0)
尝试
alert(s[prop])
在JSX中,要打印任何JS变量,必须将其包装在花括号中,但在JS中使用时则不需要,alert
是JavaScript函数。