【问题标题】:How can I concatenate strings for a React key?如何为 React 键连接字符串?
【发布时间】:2016-11-04 14:56:40
【问题描述】:

我正在创建一个列表列表,并希望为每个元素放置一个唯一键。当我使用 React Dev Tool 时,新键是“2016-10,-,football”。

  • 为什么里面有逗号?
  • 当我想要“2016-10-football”时,指定键的正确方法是什么?

React Dev Tool Console

import React from 'react'
import ReactDOM from 'react-dom'

const dates = ['2016-10', '2016-11', '2016-12'];
const sports = ['football', 'baseball', 'basketball'];

const Dates = ( { dates, sports } ) => {
  return (
    <ul>
      { dates.map( date => {
        return (
          <div key={date.toString()}  >
            <li>{date}</li>
            <Sports sports={sports} date={date}/>
          </div>
          )
        })
      }
    </ul>
    )
}

const Sports = ( { date, sports } ) => {
  return(
    <ul>
      { sports.map( sport => {
        // Results in: key="2016-10,-,football"
        // Expected: key="2016-10-football"
        return (<li key={[date, '-', sport]} >{sport}</li>)
      })}
    </ul>
    )
}

ReactDOM.render(<Dates dates={dates} sports={sports}/>, document.getElementById('main'))

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    key 需要一个字符串,因此当您传递一个数组时,您正在调用该数组的 .toString() 函数。如果您执行console.log([date, '-', sport].toString()),您将看到相同的结果

    [date, '-', sport] 替换为date + '-' + sport 以修复它。

    【讨论】:

      【解决方案2】:

      它用逗号显示,因为toString 将使用逗号加入数组。

      这就是你所拥有的:

      arr = ['2016-10', '-', 'football']
      console.log(arr.toString); // "2016-10,-,football"
      

      这就是你想要的:

      arr = ['2016-10', '-', 'football']
      console.log(arr.join()); // "2016-10-football"
      

      因此考虑将li 替换为(注意.join()):

      return (<li key={[date, '-', sport].join()} >{sport}</li>)
      

      编辑:使用 join("") 获得预期结果,您应该将分隔符(在本例中为空字符串)传递给方法的参数。例如,['2016-10', '-', 'football'].join('~separator~') 将返回 "2016-10~separator~-~separator~football"

      【讨论】:

        猜你喜欢
        • 2011-02-12
        • 2015-07-21
        • 1970-01-01
        • 2012-01-15
        • 2014-02-18
        • 2022-07-11
        • 1970-01-01
        • 2020-12-18
        相关资源
        最近更新 更多