What is the best way to have variable attributes in JSX?

后端 未结 2 666
你的背包
你的背包 2021-02-03 10:22

Hopefully my question is clear, I\'m mainly looking for a way to dynamically attach attributes to a JSX input.



        
相关标签:
2条回答
  • 2021-02-03 10:53

    You can't do it the way you are doing. You need to define your attributes as object and pass that as spread attributes.

    The properties of the object that you pass in are copied onto the component's props.

    You can use this multiple times or combine it with other attributes.

    var Hello = React.createClass({
          render: function() {
            
            var opt = {}
            opt['placeholder'] = "enter text here";
            return (<div>
            Hello {this.props.name}
            <div>
            	<input type="text" {...opt}/>
            </div></div>);
          }
        });
        
        ReactDOM.render(
          <Hello name="World" />,
          document.getElementById('container')
        );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script>
    <div id="container">
        <!-- This element's contents will be replaced with your component. -->
    </div>

    DOCS

    0 讨论(0)
  • 2021-02-03 11:08

    You can initialize an object with a computed property name, and then use JSX Spread Attributes to convert it to attribute:

    const DemoComponent = ({ variablePropName, variablePropValue }) => { 
        const variableAttribute = { [variablePropName]: variablePropValue };
        return (
            <input type="text" { ...variableAttribute } />
        );
    };
    
    0 讨论(0)
提交回复
热议问题