Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应器&;谷歌MDL按钮onClick不工作_Javascript_Reactjs_Material Design - Fatal编程技术网

Javascript 反应器&;谷歌MDL按钮onClick不工作

Javascript 反应器&;谷歌MDL按钮onClick不工作,javascript,reactjs,material-design,Javascript,Reactjs,Material Design,我有一些类似下面的JS。我发现,如果我删除mdljslayout,按钮的onClick就会起作用。否则它就失败了。为什么会这样?我已经做了componentHandler.upgradeDom() “严格使用”; module.exports=React.createClass({ componentDidMount:function(){ console.log('update') componentHandler.upgradeDom(); }, addExpense:function(){

我有一些类似下面的JS。我发现,如果我删除
mdljslayout
,按钮的
onClick
就会起作用。否则它就失败了。为什么会这样?我已经做了
componentHandler.upgradeDom()

“严格使用”;
module.exports=React.createClass({
componentDidMount:function(){
console.log('update')
componentHandler.upgradeDom();
},
addExpense:function(){
console.log(“添加费用”);
},
render:function(){
返回(
费用
增加费用
);
}
});
如果我查看React调试器工具,我实际上可以看到onClick应该被绑定


看起来mdl与react不兼容,并阻止react组件的单击事件工作。希望在将来的更新中可以解决这个问题,但在此之前,您可以通过在安装组件后手动重新添加事件来解决这个问题

componentDidMount: function() {
  componentHandler.upgradeDom();
  var button = this.refs.btnAddExpense;
  button.addEventListener('click', this.addExpense);
},
希望回答您的问题: 有了所使用的资源,它显然不需要触及DOM

HTML
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js">
</script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

JS
var Widget = React.createClass({
  handleBtnClick: function(e) {
    e.preventDefault();
    alert("clicked!");
    return true;
  },

  render: function() {
    return <div >
      <form>
        < button className = "mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-textfield--full-width mdl-button--facebook"
          onClick = {
            this.handleBtnClick
          } >
          Click MEEEEEE!
        < /button >  </form> < /div >;
     }
  });

  ReactDOM.render( < Widget / > ,
  document.getElementById('container')
);
HTML
JS
var Widget=React.createClass({
把手点击:功能(e){
e、 预防默认值();
警报(“单击!”);
返回true;
},
render:function(){
返回
; } }); ReactDOM.render(, document.getElementById('容器') );
-您可能会发现这很有帮助;确保click处理程序是具有正确“this”对象的闭包。Agreed React使用动态模板,因此有必要升级元素。还有一个react mdl项目,它处理一些其他问题。根据,componentHandler.upgradeElement()可能比upgradeDom()轻一些。希望有帮助。我发现当使用
mdljslayout
时,它不起作用。。看看react-mdl项目来解决这个问题。在这种情况下,这可能就像向蚁丘投掷原子弹一样,但react和mdl是由拥有大量资源的公司快速发展而来的框架,因此react-mdl项目有望成为出现的不兼容的收集点。
HTML
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js">
</script>

<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

JS
var Widget = React.createClass({
  handleBtnClick: function(e) {
    e.preventDefault();
    alert("clicked!");
    return true;
  },

  render: function() {
    return <div >
      <form>
        < button className = "mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-textfield--full-width mdl-button--facebook"
          onClick = {
            this.handleBtnClick
          } >
          Click MEEEEEE!
        < /button >  </form> < /div >;
     }
  });

  ReactDOM.render( < Widget / > ,
  document.getElementById('container')
);