React - 如何动态创建属性

时间:2017-01-25 16:44:09

标签: reactjs react-jsx wai-aria

我有2个属性连接到2个道具:aria-hiddenaria-labelaria-hidden为真时,它只显示一个。如果为假,则仅显示aria-label

我写了这段代码,但它并不干......我怎样才能改进它?

 render() {
     let svgMarkup = '';

        if (this.props.hidden) {
            svgMarkup = (
                <svg role="img" aria-hidden="true">
                    ...
                </svg>
            );
        } else {
            svgMarkup = (
                <svg role="img" aria-label={ this.props.label }>
                    ...
                </svg>
            );
        }

        return svgMarkup;
 }

1 个答案:

答案 0 :(得分:9)

您可以在普通对象上设置道具,然后使用扩展语法将道具应用于您的反应组件:

render() {
    const ariaProps = this.props.hidden ?
        { 'aria-hidden': 'true' }
        :
        { 'aria-label': this.props.label };

    return (
        <svg role="img" {...ariaProps}>
            ...
        </svg>
    );
}