在 React 中动态设置属性键(例如 data-{foo}="bar")
Dynamically set attribute key (e.g. data-{foo}="bar") in React
如果您知道密钥,则在 React 中设置属性很简单,例如
data-500={this.props.YDistance}
但是如何动态设置密钥的一部分。例如
data-{this.props.YDistance}="valueHere"
var Test = React.createClass({
render: function() {
return (
<div data-{this.props.YDistance}="valueHere">
{this.props.children}
</div>
);
}
});
ReactDOM.render(
<Test YDistance="500">Hello World!</Test>,
document.getElementById('container')
);
有些库需要这种属性设置(例如 skrollr 等)
您可以使用一个对象来存储动态属性,然后使用 JSX 扩展属性。
https://facebook.github.io/react/docs/jsx-spread.html
const propBag = { [`data-${foo}`] = 'bar' };
return (
<div {...propBag}>
{this.props.children}
</div>
);
即使用computed properties feature of ES6 as well as template literal strings。如果您不使用 ES6 功能,您可以像这样执行 ES5 实现:
var propBag = {};
propBag['data-' + foo] = 'bar';
return (
<div {...propBag}>
{this.props.children}
</div>
);
如果您知道密钥,则在 React 中设置属性很简单,例如
data-500={this.props.YDistance}
但是如何动态设置密钥的一部分。例如
data-{this.props.YDistance}="valueHere"
var Test = React.createClass({
render: function() {
return (
<div data-{this.props.YDistance}="valueHere">
{this.props.children}
</div>
);
}
});
ReactDOM.render(
<Test YDistance="500">Hello World!</Test>,
document.getElementById('container')
);
有些库需要这种属性设置(例如 skrollr 等)
您可以使用一个对象来存储动态属性,然后使用 JSX 扩展属性。
https://facebook.github.io/react/docs/jsx-spread.html
const propBag = { [`data-${foo}`] = 'bar' };
return (
<div {...propBag}>
{this.props.children}
</div>
);
即使用computed properties feature of ES6 as well as template literal strings。如果您不使用 ES6 功能,您可以像这样执行 ES5 实现:
var propBag = {};
propBag['data-' + foo] = 'bar';
return (
<div {...propBag}>
{this.props.children}
</div>
);