2014-07-15 16 views
11

Phản hồi hỗ trợ các thuộc tính data- * và aria- * trên các phần tử. Khi sử dụng API thành phần, tôi đoán các thuộc tính này có thể được đặt giống như các phần còn lại:ReactJs: Đặt thuộc tính data- trên các phần tử không có JSX

React.DOM.div({style: {...}, dataMyFoo: 'bar'}, ...) 

Không. Điều đó không hiệu quả. Thuộc tính dataMyFoo bị bỏ qua âm thầm. Tôi đọc ở đâu đó rằng những thứ này cần phải là chữ thường. Cách thực hiện:

React.DOM.div({style: {...}, datamyfoo: 'bar'}, ...) 

Một lần nữa, bỏ qua âm thầm.

Điều này có khả thi không? Nếu vậy, bí mật là gì? Tôi đã dành khá nhiều thời gian để tìm kiếm mà không cần tìm câu trả lời.

Trả lời

21

Câu trả lời, nó quay ra, là sử dụng gạch nối-tách tất cả các tên chữ thường cho thuộc tính dữ liệu, như vậy:

React.DOM.div({style: {...}, 'data-my-foo': 'bar'}, ...) 

Lưu ý rằng bạn phải trích dẫn tên thuộc tính trong trường hợp này, vì có dấu gạch nối là không được phép trong số nhận dạng trong Javascript.

+1

Có, điều này là chính xác. Chúng tôi đang xem xét chuyển sang mô hình 'dataSet: {myFoo: 'bar'}' trong tương lai, sẽ đặt 'data-my-foo =" bar "' vào DOM. Điều này tuân theo chặt chẽ API DOM để truy cập các thuộc tính dữ liệu. –

+1

@ PaulO'Shannessy nghe có vẻ hoàn hảo. Một trong những điều đầu tiên tôi đã thử là 'data: {myFoo: 'bar'}' vì vậy điều này theo sát những gì tôi đã tự nhiên có xu hướng làm. – DavidM

+0

Điều gì về các thuộc tính data- * không có giá trị? bạn chỉ nên làm '{'data-foo-bar': true}'? hoặc cái gì khác? –

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