2015-12-10 43 views
7

Có cách nào để sử dụng giá trị của biến chuỗi làm khóa cho setState() không?React.js setState() với biến cho vòng lặp chính bên trong?

getInitialState: function() { 
    return { 
     foo: '', 
     bar: '' 
    } 
} 

someOtherHandler: function() { 
    var arr = ['foo', 'bar']; 
    var _this = this; 
    var number = Math.random(); 

    for (var i in arr) { 
     _this.setState({ arr[i]: number }); 
    } 

} 

Phản hồi ném lỗi cú pháp với trên và đặt [i] thành biến kết thúc thiết lập trạng thái mới với tên của biến đó.

Trả lời

14

Bạn có thể tạo đối tượng trước khi gọi setState.

var newState = {}; 
newState[i] = number; 
_this.setState(newState); 

Ngoài ra nếu bạn đang sử dụng ES6, bạn có thể tận dụng một computed property.

_this.setState({ [i]: number }); 

Tuy nhiên mã này sẽ gọi setState nhiều lần, đó là hiệu quả hơn để chỉ gọi nó một lần. Xây dựng đối tượng trạng thái được cập nhật, sau đó áp dụng nó.

var newState = {}; 

for(var i in arr) { 
    newState[i] = number; 
} 

this.setState(newState); 
+0

Cảm ơn rất nhiều! Tôi đã thực sự chỉ chạy qua một câu hỏi tương tự mà về cơ bản chỉ cho tôi cùng một điều: http://stackoverflow.com/questions/29280445/reactjs-setstate-with-a-dynamic-key-name – cyoung

Các vấn đề liên quan