首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何连接一个反应键的字符串?

我如何连接一个反应键的字符串?
EN

Stack Overflow用户
提问于 2016-11-04 14:56:40
回答 4查看 9.3K关注 0票数 7

我正在创建一个列表列表,并希望为每个元素设置一个唯一的键。当我使用React工具时,新的键是"2016-10,-,足球“。

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

React工具控制台

代码语言:javascript
复制
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'))
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-04 15:01:26

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

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

票数 9
EN

Stack Overflow用户

发布于 2016-11-04 15:02:31

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

这就是你所拥有的:

代码语言:javascript
复制
arr = ['2016-10', '-', 'football']
console.log(arr.toString); // "2016-10,-,football"

这就是你想要的:

代码语言:javascript
复制
arr = ['2016-10', '-', 'football']
console.log(arr.join()); // "2016-10-football"

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

代码语言:javascript
复制
return (<li key={[date, '-', sport].join()} >{sport}</li>)

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

票数 0
EN

Stack Overflow用户

发布于 2022-06-18 18:38:28

添加了一些示例,以更好地理解

key={'company_'+index} // key={date +‘-’+体育}

代码语言:javascript
复制
<TableCell key={'company_'+index} align="right">
     {row.company?.name}
</TableCell>


return(
    <ul>
      { sports.map( sport => {
        // Results in: key="2016-10,-,football"
        // Expected: key="2016-10-football"
        return (<li key={date +'-'+sport} >{sport}</li>)
      })}
    </ul>
    )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40425719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档