我試圖跟蹤任意數量的子組件。反應:創建和引用動態組件參考
通常你只需要引用this.refs.refName,但在我的情況下,我有一個任意數量的需要跟蹤的ref。
這裏有一個簡明的例子:
var NamesList = React.createClass({
getAllNames: function() {
// Somehow return an array of names...
var names = [];
this.refs.????.forEach(function (span) {
names.push(span.textContent);
})
},
render: function() {
var names = ['jack','fred','bob','carl'];
var spans = [];
names.forEach(function (name) {
spans.push(<span contentEditable={true} ref='?????'>name</span>);
});
return (
<div>
{spans}
</div>;
);
}
});
ReactDOM.render(<NamesList></NamesList>, mountNode);
如果我接近問題錯誤地讓我知道。我期望的結果是將數據從RESTful服務傳遞到React組件,允許用戶編輯該數據,並在需要時再次導出。我一直無法在React refs文檔中找到答案。
對不起,我試圖動態地拉動跨度的名字__。看起來您所做的更改是關於動態設置跨度。在僞代碼中:對於每個跨度,抓取textContent並將它們作爲數組返回。這有助於解釋我在問什麼? – joshuakcockrell
用2種解決方案更新了答案。請注意,第二個解決方案確實會返回一個帶有跨度textContent的數組,但不使用refs。 React是並且應該是textContent的唯一所有者和管理者。所以它不是必需的(和buggy /不可管理的代碼的來源)使用refs來獲取名稱。 – wintvelt