0
我處於學習React.js的最初階段。我試圖學習如何模塊化React.js組件。React.js - 作爲CommonJS模塊的組件 - 事件不起作用
我製作了一個React.js組件作爲CommonJS模塊,當我從其他模塊調用它時 - 除了在組件重新呈現後狀態變化。
我把我的代碼放在最後。
我已將TestComponent
的代碼放在文件名component.jspx
中。然後我使用的組件app.js
根據TestComponent
中的代碼,它的initialState組件上將有兩個列表項(帶有一個觸發事件的按鈕)。
然後在componentDidMount
,我用一個額外的數據改變狀態。
組件正確呈現 - 除了事件handleClickEvenet
似乎沒有爲更新的視圖綁定。
請幫我理解如何解決這個問題。
//
// component.jsx
var TestComponent =React.createClass({
handleClickEvent: function() {
alert ('Clicked...');
},
getInitialState: function() {
return {
comments: [
{author: 'A1', comment: 'Comment by A1'},
{author: 'A2', comment: 'Comment by A2'}
]
};
},
componentDidMount: function() {
var comments = this.state.comments;
comments.push({author: 'A3', comment: 'Comment by A3'});
this.setState({comments: comments});
},
render: function() {
var thisComponent = this;
return (
<ol>
{
this.state.comments.map (function(comment, i) {
return (
<li>
{comment.comment} | {comment.author} |
<button onClick={thisComponent.handleClickEvent}>Click me</button>
</li>
)
})
}
</ol>
)
}
})
module.exports = TestComponent;
// -------
// app.js
// -------
var CommentBox = require('./components/Demo.jsx');
var React = require('../components/react/react-with-addons.js');
var commentBox = React.createElement(CommentBox, data);
React.render(commentBox, document.body);
嗨Emil, 感謝您關注它。 我知道它適用於JSFiddle - 因爲組件和調用都發生在一個文件中。 但我剛剛提到的問題只有當我使用module.exports導出React組件時。然後在不同的文件中使用它。 – Ananth