0

親コンポーネントのモンスターがあり、そこでモンスター コンポーネントをレンダリングします。

for monster in @state.monsters
      React.createElement Monster, key: monster.id, monster: monster, team: @state.team...

内部モンスター:

div className: 'col-md-4',
  hr {}
  img
    className: 'img-responsive img-circle thumbnail'

....

ブートストラップの列と行、そのブレークがあります。each(3) オブジェクトをブートストラップ行にラップするには、各スライスのようなメソッドが必要です。私は lodash _chunk とカスタムの Array.prototype バリアントを使用しましたが、このループ内では使用できない変数に反応します。

Array::each_slice = (size, callback) ->
  i = 0
  l = @length
  while i < l
    callback.call this, @slice(i, i + size)
    i += size

これはスライスごとの関数で、これを作成します。

@state.array.each_slice 3, (slice) ->
  for component in slice
    React.createElement Monster, key: component.id, monster: component, team: @state.team etc....

キャッチされていない TypeError: 未定義のプロパティ 'チーム' を読み取ることができません

誰でも私を助けることができますか?

4

1 に答える 1

0

の値は、コールバック@内で異なります。each_slice違いを確認するには、次を試してください。

console.log(@) # `@` is the React component
@state.array.each_slice 3, (slice) =>
  console.log(@) # `@` is `window`, the global object
  for component in slice
    React.createElement Monster, team: @state.team # ...

コールバック内の値を保持する@には、次のように「太い矢印」( =>) を使用します。

console.log(@) # the React component
@state.array.each_slice 3, (slice) =>
  console.log(@) # still the React component :)
  for component in slice
    React.createElement Monster, team: @state.team # ...
于 2015-10-07T03:44:51.257 に答える