迭代组件

时间:2015-06-09 14:01:29

标签: javascript reactjs react-jsx

我正在尝试访问组件中的所有ref值并对它们执行某些操作(例如,创建有效负载以发送到服务器)

我试图做一个简单的for..in循环,而不是在每个ref上使用getDOMNode()。value但它不起作用。

var Hello = React.createClass({

getAllRefsValues: function() {
    for(ref in this.refs) {
        console.log(ref);
        // ref.getDOMNode().value doesnt work here 
    }
},
render: function() {
    return (
     <div>
        <button onClick={this.getAllRefsValues}>Get all props values</button>
        <input type="text" ref="test1"/>
        <input type="text" ref="test2"/>
        <input type="text" ref="test3"/>
  </div>
    )
 }
});

我正在与jsfiddle合作。

我有一种感觉,这可能不是一个好主意,但我不知道如何处理这个问题。

有人帮忙吗?

2 个答案:

答案 0 :(得分:10)

这是因为this.refs是一个对象,你需要获取值,而不是键:

getAllRefsValues: function() {
    for (var ref in this.refs) {
        console.log(this.refs[ref]);
        console.log(this.refs[ref].getDOMNode()); 
    }
}

根据我的经验,最好使用Controlled Components而不是refs

答案 1 :(得分:1)

使用lodash,您可以迭代public static String html2text(String html) { return Jsoup.parse(html).text(); } 并创建简单对象。

String alias = "u";
String select = "SELECT u.email";
String where = "u.userId = :id";
Map<String, Object> params = new HashMap<>();
params.put("id", userId);

List<User> users = db.findRecords(User.class, alias, select, where, params);