2015-04-26 16 views
27

Tôi đang thử dùng material-uireact và tôi đang gặp sự cố với sự kiện không kích hoạt. Tôi đã cài đặt react-tap-event-plugin và tôi gọi injectTapEventPlugin() khi khởi động ứng dụng.Phản hồi, nhấn vào sự kiện và tài liệu-ui

toggleMenu không bao giờ được gọi là trong đoạn mã sau:

/** @jsx React.DOM */ 
var React = require('react'); 
var mui = require('material-ui'); 
var LeftNav = mui.LeftNav; 
var MenuItem = mui.MenuItem; 
var AppBar = mui.AppBar; 
var App = React.createClass({ 

    getInitialState: function() { 
    return { 
     message: 'Hello World!' 
    }; 
    }, 
    toggleMenu: function() { 
    console.log('clicked hamburger'); //<-- This is never fired 
    this.refs.menu.toggle(); 
    }, 

    render: function() { 
     var menuItems = [{ route: 'get-started', text: 'Get Started' }]; 
     return (
<div> 
    <AppBar onMenuIconButtonTouchTap = {this.toggleMenu} title = "Hej" /> 
    <LeftNav ref = "menu" docked = {false} menuItems = {menuItems} /> 
</div> 
     ); 
    } 

}); 

module.exports = App; 

Mã đầy đủ ví dụ có thể được kiểm tra ra từ đây: https://github.com/oskbor/lunch-mirror

hạnh phúc cho bất kỳ gợi ý về những gì Im làm sai!

Trả lời

16

Vì vậy, tôi không thể xác định lý do vì sao đây là nguyên nhân, nhưng tôi nghĩ vấn đề là cách bạn tách bản dựng của mình thành 2 tệp riêng biệt.

Nếu tôi thay đổi lên GulpFile của bạn để loại trừ việc xây dựng vendors.js và loại bỏ các dòng

appBundler.external(options.development ? dependencies : []); 

nó sẽ xây dựng một tập tin js duy nhất với tất cả các phụ thuộc trong đó và mọi thứ hoạt động như mong đợi.

Lý thuyết của tôi về lý do tại sao:

Khi bạn loại bỏ sự phụ thuộc từ main.js bó, bó chính kết thúc bao gồm cả chỉ là những gì nó cần, bao gồm chỉ các mảnh nhỏ Phản ứng rằng tap-sự kiện cắm nhu cầu. react/lib/SyntheticUIEvent, v.v. Vì vậy, những phần nhỏ được vá để bao gồm các sự kiện touchTap.

Nhưng, trong nhóm nhà cung cấp, bạn có đầy đủ React, đó là những gì bạn yêu cầu trong ứng dụng của mình. Điều này không được vá để bao gồm các sự kiện touchTap, vì vậy không có sự kiện touchTap nào thực sự bị sa thải, bởi vì Phản ứng mà bạn đã đưa vào không được vá đúng cách.

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