2014-11-04 17 views
5

Khi tôi cố gắng và chạy Transferring with ... in JSX dụLỗi cú pháp trong tài liệu có phản ứng 0.12 được cập nhật?

var FancyCheckbox = React.createClass({ 
    render: function() { 
    var { checked, ...other } = this.props; 
    var fancyClass = checked ? 'FancyChecked' : 'FancyUnchecked'; 
    // `other` contains { onClick: console.log } but not the checked property 
    return (
     <div {...other} className={fancyClass} /> 
    ); 
    } 
}); 
React.render(
    <FancyCheckbox checked={true} onClick={console.log}> 
    Hello world! 
    </FancyCheckbox>, 
    document.body 
); 

tôi nhận được Uncaught SyntaxError: Unexpected token {. Tương tự khi tôi cố gắng chạy nó trong jsfiddle

Đây có phải là lỗi hoặc là một số mã chuyển đổi bổ sung cần thiết để hoạt động không?

Trả lời

5

Để sử dụng tính năng này, bạn phải có harmony enabled. Thật không may việc tích hợp fiddle bạn đang sử dụng là không có nó được kích hoạt.

Có một số commit made recently bổ sung thêm, rất có khả năng nó sẽ xuất hiện ở đó.

Nếu bạn muốn sử dụng nó ngay lập tức, bạn có thể lưu trữ các tập tin ở đâu đó, hoặc chỉ cần thêm đoạn mã trực tiếp đến fiddle:

<script> 
    (function() { 
    var tag = document.querySelector(
      'script[type="application/javascript;version=1.7"]' 
    ); 
    if (!tag || tag.textContent.indexOf('window.onload=function(){') !== -1) { 
     alert('Bad JSFiddle configuration, please fork the original React JSFiddle'); 
    } 
    tag.setAttribute('type', 'text/jsx;harmony=true'); 
    tag.textContent = tag.textContent.replace(/^\/\/<!\[CDATA\[/, ''); 
    })(); 
</script> 

Điểm mấu quan trọng là 'text/jsx;harmony=true'. Check the updated fiddle.

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