我是ReactJS的新手,如果这听起来不对劲,我很抱歉.我有一个组件,它根据接收到的数据创建几个表行.

列中的每个单元格都有一个单选复选框.因此,用户可以从现有行中 Select 一个site_name和一个address. Select 应显示在页脚中.这就是我被困的地方.

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()的操作来 Select 一个单选复选框类型,并将其插入到第一个页脚单元格中.

但肯定有一种方法,我完全错过了?非常感谢

推荐答案

对渲染的任何更改都应通过stateprops(react doc)进行更改.

所以在这里我注册了输入的事件,然后更改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

Html相关问答推荐

当ul为Flex时,使ul元素在指定高度内可垂直滚动

关于角内按钮范围的混乱

CSS/添加margin—top到嵌入式facebook帖子

删除第一个列表项上的左边框

每次在视口中运行动画

如何在div中淡入和淡出渐变背景?

如何防止可见的滑动抽屉,同时转移HTML方向?

如何使用CSS在NSAttributedString中为HTML文本中的图像制作覆盖图

单独处理Button:Focus的多行按钮

try 更新我的Node.js应用程序中的用户,但我收到错误.然而,当我使用postman 时,更新工作正常

元素offsetTop在滚动容器中时没有更改

如何在css中在span中绘制圆弧?

为什么要添加换行符(至少在 Google Chrome 中)

perl hdb 调试器:浏览器以错误的编码显示 UTF-8 源代码

使用 Thymeleaf 将图像水平居中

如何围绕中心zoom svg 并使父级达到其子级大小的 100%

Github上部署需要花费几小时时间:等待github pages部署批准

白色栏超出页面100%的右侧

将 div 放在图片旁边而不是下方

如何创建带有偏移边框线的双色边框?