React 不会将特定值传递给 “props”
React won't pass a particular value to "props"
我遇到了一个奇怪的问题,我无法用 React 确定(我也在使用 CoffeeScript,但我非常怀疑这是一个因素)。基本上,我正在遵循一个教程,其中使用源组件(父组件)、FeedList 组件(子组件)和 FeedItem(孙子)构建消息源......抱歉,如果我的术语不正确。相关代码为:
Feed.cjsx
getInitialState: ->
FEED_ITEMS = [
{ key: 1, title: 'Realtime data!', description: 'Firebase is cool', voteCount: 49 }
{ key: 2, title: 'JavaScript is fun', description: 'Lexical scoping FTW', voteCount: 34 }
{ key: 3, title: 'Coffee makes you awake', description: 'Drink responsibly', voteCount: 15 }
]
{
items: FEED_ITEMS
formDisplayed: false
}
...
render: ->
...
<FeedList items={@state.items} onVote={@onVote} />
FeedList.cjsx
render: ->
feedItems = @props.items.map ((item) ->
<FeedItem key={item.key} ... />
).bind(@)
<ul className='list-group container'>
{feedItems}
</ul>
FeedItem.cjsx
render: ->
<li key={@props.key} className='list-group-item'>
...
</li>
如果我在 FeedItem 的呈现方法中控制台.log"@props.key",我会得到未定义。但是,如果我从 FeedList 渲染方法的映射函数中记录"item.key",我会得到 1、2、3,这是我应该得到的。所以在我看来,无论出于何种原因,React 都不想将"密钥"道具传递给 FeedItem。有什么想法吗?
对于其他偶然发现这一点的人来说,react 只有一些保留的道具,但它们值得注意.key、ref、__self 和 __source。
var RESERVED_PROPS = {
key: true,
ref: true,
__self: true,
__source: true
};
^^ 取自反应源。
还值得注意的是__self={this}
如果您收到固定冲突错误并希望能够将它们调试到组件级别,则非常有用。
由于 react 将 key 视为特殊属性 (http://facebook.github.io/react/docs/special-non-dom-attributes.html),因此无法通过 props 访问它。react 文档还警告不要在纯 html 标记 (http://facebook.github.io/react/docs/multiple-components.html#dynamic-children) 中设置键,并建议将多个组件包装在一个 react 组件中。
如果将key
重命名为非保留名称,它应该可以工作:
Feed.cjsx:
FEED_ITEMS = [
{ itemId: 1, title: 'Realtime data!', description: 'Firebase is cool', voteCount: 49 }
{ itemId: 2, title: 'JavaScript is fun', description: 'Lexical scoping FTW', voteCount: 34 }
{ itemId: 3, title: 'Coffee makes you awake', description: 'Drink responsibly', voteCount: 15 }
]
然后,您可以通过子组件(FeedList)中的@props.itemId
访问itemId。
饲料列表:
feedItems = @props.items.map ((item) ->
<FeedItem key={item.itemId} ... />
).bind(@)
请注意,每个组件的键对于 DOM 中的每个组件或节点必须是唯一的,这就是为什么键不能继承的原因,因为将父级和子级设置为相同的键将不允许 react 在渲染 DOM 时将它们标识为单独的实体。
- 如何将输入范围的值传递给JS中的变量
- 如何将值传递给wicket中的javascript函数
- 将值传递给jquery创建的输入字段
- 需要将select标记选项值传递给ajax函数
- 使用Ajax将PHP值传递给javascript
- 将javascript值传递给PHP
- 将javascript值传递给php是正确的方法
- 将不属于表单的HTML页面中的值传递给php页面
- 正在获取props值的子字符串-React
- Angular,将文本框的动态值传给控制器
- 在key up函数上将文本框值传递给javascript
- 可以't使用ajax调用将值传递给Web服务
- 如何在同一页面上使用windows.location.href将js值传递给php时停止刷新页面
- 多个单选按钮,需要将选定的值传递给javascript
- 将 MSSQL 表值传递给 javascript
- 如何将 HTML 文档作为起始值传递给 CodeMirror
- 如何将数据存储值传递给javascript?我需要从gae数据存储中获取数据,并需要传递javascript
- 将索引值传递给javascript命名空间数组
- 将文本框值传递给javascript函数
- React 不会将特定值传递给 “props”