我正在尝试创建一个可重复使用的“标记”React组件,以便用户可以在onclick上创建标记并查看显示在DOM中的信息。在具有不同道具的容器中多次渲染组件?
这里的模块:
module.exports = React.createClass({
render: function() {
return (
<div className="language chip" data-lang={this.props.language} data-lang-level={this.props.level}>
{this.props.language} ({this.props.level})
<i className="material-icons">close</i>
</div>
);
}
});
并将OnClick呼叫:
var addLanguage = $('a#add-language');
addLanguage.click(function() {
var languageLearning = $('#language-learning');
var levelLearning = $('#language-level');
if (languageLearning != null && levelLearning != null) {
ReactDOM.render(
<LanguageChip
language={languageLearning.val()}
level={levelLearning.val()}
/>,
document.getElementById('language-chips')
);
languageLearning.select2('val', '');
levelLearning.select2('val', '');
}
})
我并没有意识到,使用React.DOM时,“任何现有的DOM元素里面首先调用时更换“。这意味着当添加第二个芯片时,第一个被移除。我希望用户能够拥有多个芯片。
我该怎么做?
谢谢,这太棒了!我不想通过一个表单来完成,因为我使用的区域实际上已经在一个表单中,所以我得到了嵌套的表单问题。任何建议在表单外执行此操作? –
我编辑了我的答案。您只需使用按钮的单击事件而不是表单的提交事件。 但是,如果它是在一个窗体内,我想你会想提交标签的形式不是? – Snahedis
是的,我需要提交标签,但通过JSON具有非常特殊的结构,所以不用担心。谢谢! –