我是ReactJS的新手,很抱歉,如果听起来不对。我有一个根据接收到的数据创建多个表行的组件。
列中的每个单元格都有一个单选复选框。因此,用户可以从现有行中选择一个site_name和一个address。选项应在页脚中显示。那就是我被困住的地方。
site_name
address
var SearchResult = React.createClass({ render: function(){ var resultRows = this.props.data.map(function(result){ return ( <tbody> <tr> <td><input type="radio" name="site_name" value={result.SITE_NAME}>{result.SITE_NAME}</input></td> <td><input type="radio" name="address" value={result.ADDRESS}>{result.ADDRESS}</input></td> </tr> </tbody> ); }); return ( <table className="table"> <thead> <tr> <th>Name</th> <th>Address</th> </tr> </thead> {resultRows} <tfoot> <tr> <td>chosen site name ???? </td> <td>chosen address ????? </td> </tr> </tfoot> </table> ); } });
在jQuery中,我可以做一些事情,例如$("input[name=site_name]:checked").val()选择一个单选复选框类型并将其插入第一个页脚单元格。
$("input[name=site_name]:checked").val()
但是肯定有一种Reactjs方式,我完全不知道吗?非常感谢
渲染的任何更改都应通过state或props(react doc)进行更改。
state
props
因此,在这里我注册了输入事件,然后更改了state,这将触发呈现在页脚上的渲染。
var SearchResult = React.createClass({ getInitialState: function () { return { site: '', address: '' }; }, onSiteChanged: function (e) { this.setState({ site: e.currentTarget.value }); }, onAddressChanged: function (e) { this.setState({ address: e.currentTarget.value }); }, render: function(){ var resultRows = this.props.data.map(function(result){ return ( <tbody> <tr> <td><input type="radio" name="site_name" value={result.SITE_NAME} checked={this.state.site === result.SITE_NAME} onChange={this.onSiteChanged} />{result.SITE_NAME}</td> <td><input type="radio" name="address" value={result.ADDRESS} checked={this.state.address === result.ADDRESS} onChange={this.onAddressChanged} />{result.ADDRESS}</td> </tr> </tbody> ); }, this); return ( <table className="table"> <thead> <tr> <th>Name</th> <th>Address</th> </tr> </thead> {resultRows} <tfoot> <tr> <td>chosen site name {this.state.site} </td> <td>chosen address {this.state.address} </td> </tr> </tfoot> </table> ); } });
jsbin