json - antd 时间线的 Reactjs 条件属性

标签 json reactjs

我正在循环遍历我正在创建的具有时间线的 ReactJS 组件的一组 JSON 数据。

JSON 看起来像这样:

"chart": [{
    "label": "Registered",
    "date": "2017-07-03" 
}, {
    "label": "1",
    "date": "2017-07-04"
}, {
    "label": "2",
    "date": "2017-08-01"
}, {
    "label": "3",
    "date": "2017-09-01"
}]

代码如下:

<Timeline>
    {
        this.props.data.contents.chart.map(function(e, index) {
            return (
                <Timeline.Item key={index}>
                    {e.label}
                    <span>{moment(e.date).format("DD MMM YYYY")}</span>
                </Timeline.Item>
            );
        })
    }            
</Timeline>

但我想添加一个条件属性来修改 Timeline.Item 部分。但我遇到语法错误。

<Timeline>
    {
        this.props.data.contents.chart.map(function(e, index) {
            return (
                <Timeline.Item key={index} (e.label === "Registered" ? "dot={<Icon type="idcard" style={{ fontSize: '12px' }} />} color="red"" : null)>
                    {e.label}
                    <span>{moment(e.date).format("DD MMM YYYY")}</span>
                </Timeline.Item>
            );
        })
    }            
</Timeline>

最佳答案

您无法基于三元运算符构建实际的 JSX 语法代码。您需要执行以下操作之一:

根据您的情况构建每个 Prop ,如下所示:

<Timeline>
    {
        this.props.data.contents.chart.map(function(e, index) {
            return (
                <Timeline.Item key={ index }
                               dot={ (e.label === 'Registered' ? <Icon type="idcard" style={{ fontSize: '12px' }} /> : null) }
                               color={ (e.label === 'Registered' ? 'red' : '') }>
                    {e.label}
                    <span>{moment(e.date).format("DD MMM YYYY")}</span>
                </Timeline.Item>
            );
        })
    }            
</Timeline>

或者根据条件返回完全不同的JSX:

<Timeline>
{
    this.props.data.contents.chart.map(function(e, index) {
        if (e.label === 'Registered') {
            return (
                <Timeline.Item key={ index }
                               dot={ <Icon type="idcard" style={{ fontSize: '12px' }} /> }
                               color="red">
                    {e.label}
                    <span>{moment(e.date).format("DD MMM YYYY")}</span>
                </Timeline.Item>
            );
        }
        return (
            <Timeline.Item key={ index }>
                {e.label}
                <span>{moment(e.date).format("DD MMM YYYY")}</span>
            </Timeline.Item>
        );
    })
}            
</Timeline>

关于json - antd 时间线的 Reactjs 条件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46568408/

相关文章:

mysql - 我可以使用别名或 const 作为 JSON_EXTRACT 函数的 JSON 键吗

javascript - 使用 jquery then() 打印 html 和 json 结果

javascript - 使用 Mongoose 将在线购物车项目插入 MongoDB

reactjs - 处理 "Failed to load plugin ' 中声明的 '.eslintrc' react' 'eslint-plugin-react' : Cannot find module 0x104567910 "ESLint error

ajax - ChartJS 的条形图不渲染

javascript - JSON.Stringify |将结果输出到屏幕上,并带有引号标签 ''

javascript - React - 如何将输入字段(受控)重置为默认值

javascript - 在jsx中的渲染函数中编写条件语句

javascript - 如何在同一代码行中使用 map() 和 find()

javascript - 当我将鼠标悬停在它上面的东西上时,如何使边框变大?