相关疑难解决方法(0)

React(Facebook):受控复选框的托管状态

我在尝试使用React创建一个复选框来选择和取消选择其他单独的复选框(选择/取消选择全部)时遇到了一些问题.我已经阅读了http://facebook.github.io/react/docs/forms.html,发现受控非受控 <input> s 之间存在差异.我的测试代码如下:

var Test = React.createClass({
    getInitialState: function() {
        return {
            data: [
                { id: 1, selected: false },
                { id: 2, selected: false },
                { id: 3, selected: false },
                { id: 4, selected: false }
            ]
        };
    },
    render: function() {
        var checks = this.state.data.map(function(d) {
            return (
                <div>
                    <input type="checkbox" data-id={d.id} checked={d.selected} onChange={this.__changeSelection} />
                    {d.id}
                    <br />
                </div>
            );
        });
        return (
            <form>
                <input type="checkbox" ref="globalSelector" onChange={this.__changeAllChecks} />Global …
Run Code Online (Sandbox Code Playgroud)

javascript facebook reactjs

32
推荐指数
1
解决办法
6万
查看次数

如何选择一个Reactjs组件模板中使用的所有子组件(不是DOM元素)?

我遇到的情况是,我将两个要素捆绑在一起,而一个董事会以不可商议的方式始终由4个细分小组组成:

var BoardPanel = React.createClass({
  getInitialState: function() {
    return { someval: '' };
  }, 
  render: function() {
    <div>{this.state.someval}</div>
  },
  doSomething: function(v) {
    setState({ someval: v });
  }
});

var BoardLayout = React.createClass({
  render: function() {
    <div>
      <h1>{this.props.label{</h1>
      <div ref="panels">
        <BoardPanel />
        <BoardPanel />
        <BoardPanel />
        <BoardPanel />
      </div>
    </div>
  }
});
Run Code Online (Sandbox Code Playgroud)

BoardLayout应该能够统一地告诉每个BoardPanel调用面板API函数,所以我想做React.js的等效项:

this.querySelectorAll("BoardPanel")
    .array()
    .forEach(function(panel, idx) {
       panel.doSomething(idx);
    });
Run Code Online (Sandbox Code Playgroud)

请注意,我明确希望在这里访问DOM节点,我要访问的阵营定义的虚拟元素,对通话功能,并且永远不会触及任何真正的浏览器的DOM使用。

我看了看React.children实用程序函数,但是这些函数没什么用,因为无法指定我想要的子代,并且this.props.children要给我两个div元素,因为BoardPanel元素位于模板内部。

(我也很反对ref="..."为每个BoardPanel 添加一次性标识符,因为考虑到格式合理,结构化的标记,不需要做任何事情,这是一个可行的解决方法,但似乎像拍打一样明智。 HTML文件中每个元素的ID,而不是依赖查询选择器)

我可以通过根本不将它们实际包含在模板中并使用React.create(BoardPanel)in 添加它们来动态生成它们,BoardLayout.getInitialState但这会使立即具有洞察力的模板结构变成不透明的占位符,这也是我不希望做的事情。 …

reactjs react-jsx

3
推荐指数
1
解决办法
8127
查看次数

标签 统计

reactjs ×2

facebook ×1

javascript ×1

react-jsx ×1