Material-ui: React 15.0.2 "Unknown props onTouchTap" κ²½κ³ 

에 λ§Œλ“  2016λ…„ 07μ›” 10일  Β·  35μ½”λ©˜νŠΈ  Β·  좜처: mui-org/material-ui

λ§ˆμ§€λ§‰ λ¦΄λ¦¬μŠ€μ—μ„œ λͺ‡ 가지 λ¬Έμ œκ°€ μˆ˜μ •λ˜μ—ˆμ§€λ§Œ. 이 두 가지 κ²½κ³ κ°€ μ—¬μ „νžˆ ν‘œμ‹œλ©λ‹ˆλ‹€.

Warning: Unknown prop `onTouchTap` on <span> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in span (created by EnhancedButton)
    in EnhancedButton (created by ListItem)
    in div (created by ListItem)
    in ListItem (created by ChatMenu)
    in div (created by List)
    in List (created by _class)
    in _class (created by ChatMenu)
    in div (created by Paper)
    in Paper (created by Drawer)
    in div (created by Drawer)
    in Drawer (created by ChatMenu)
    in ChatMenu (created by ChatApp)
    in div (created by ChatApp)
    in ChatApp (created by Chat)
    in MuiThemeProvider (created by Chat)
    in Chat (created by WithWidth)
    in EventListener (created by WithWidth)
    in WithWidth (created by RouterContext)
    in RouterContext (created by Router)
    in Router (created by Root)
    in e (created by Root)
    in Provider (created by Root)

Warning: Unknown prop `styles` on <div> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in div (created by Paper)
    in Paper (created by AppBar)
    in AppBar (created by ChatRoom)
    in div (created by ChatRoom)
    in ChatRoom (created by ChatApp)
    in div (created by ChatApp)
    in ChatApp (created by Chat)
    in MuiThemeProvider (created by Chat)
    in Chat (created by WithWidth)
    in EventListener (created by WithWidth)
    in WithWidth (created by RouterContext)
    in RouterContext (created by Router)
    in Router (created by Root)
    in e (created by Root)
    in Provider (created by Root)

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‹€μŒμ„ μΆ”κ°€ν•˜μ—¬ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

// Needed for onTouchTap
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();

ꡬ성 μš”μ†Œμ—.

λͺ¨λ“  35 λŒ“κΈ€

PR을 보내고 μ‹Άμ§€λ§Œ μ§€κΈˆμ€ λ³€κ²½ 사항을 ν…ŒμŠ€νŠΈν•˜λŠ” 방법과 λ³€κ²½ μ‚¬ν•­μœΌλ‘œ 인해 κ²½κ³ κ°€ μˆ˜μ •λ˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

Yeoman Webpack 및 react: ^15.2.1 μ‚¬μš©

Warning: Unknown prop `onTouchTap` on <button> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in button (created by EnhancedButton)
    in EnhancedButton (created by RaisedButton)
    in div (created by Paper)
    in Paper (created by RaisedButton)
    in RaisedButton (created by MyButton)
    in div (created by MyButton)
    in MyButton (created by AppComponent)
    in div (created by AppComponent)
    in MuiThemeProvider (created by AppComponent)
    in AppComponent

κ°„λ‹¨ν•œ κ²ƒμ—μ„œ:

import React from 'react';
import RaisedButton from 'material-ui/RaisedButton';

export default class MyButton extends React.Component {

  render() {
    return (
      <div>
        <RaisedButton>
          Hello, world!
        </RaisedButton>

      </div>
    );
  }
}

νŒ¨ν‚€μ§€.json:

{
  ...
  "devDependencies": {
    ...
    "core-js": "^2.0.0",
    "material-ui": "^0.15.2",
    "normalize.css": "^4.0.0",
    "react": "^15.2.1",
    "react-dom": "^15.0.0",
    "react-tap-event-plugin": "^1.0.0"
  }
}

λ‹€μŒμ„ μΆ”κ°€ν•˜μ—¬ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

// Needed for onTouchTap
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();

ꡬ성 μš”μ†Œμ—.

μΆ”κ°€ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€: transitionAppearTimeout

warning.js:44 Warning: Unknown prop `transitionAppearTimeout` on <div> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in div (created by ReactTransitionGroup)
    in ReactTransitionGroup (created by DialogInline)
    in div (created by DialogInline)
    in DialogInline
    in MuiThemeProvider

Dialog μ—λ§Œ λ‚˜νƒ€λ‚¨

μ—…λ°μ΄νŠΈ: μ‹ κ²½ 쓰지 λ§ˆμ„Έμš”. 15.0.0 λ°˜μ‘κ³Ό ν•¨κ»˜ 15.2.1 κ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그듀이 λͺ‡ 가지 μ†Œν’ˆμ„ μžŠμ–΄ 버린 것 κ°™μ•„μš”.

λ‚˜λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ λͺ¨λ‘μ—μ„œ injectTapEventPlugin() λ₯Ό ν˜ΈμΆœν•˜μ§€λ§Œ μ—¬μ „νžˆ λ‹€μ–‘ν•œ μš”μ†Œμ™€ ν•¨κ»˜ λ§Žμ€ κ²½κ³ λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

버전:

"material-ui": "0.15.2",
"react": "15.2.1",
"react-dom": "15.2.1",
"react-tap-event-plugin": "1.0.0",

일뢀 κ²½κ³ :

Warning: Unknown prop `onTouchTap` on <label> tag. 
Warning: Unknown props `displayBorder`, `columnNumber`, `hoverable`, `onHover`, `onHoverExit` on <td> tag.

@igl ReactDOM.render injectTapEventPlugin() λ₯Ό ν˜ΈμΆœν•˜λ €κ³  ν•©λ‹ˆλ‹€.

@ixrock : $ ReactDOM.render injectTapEventPlugin() λ₯Ό ν˜ΈμΆœν•΄λ„ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(적어도 μ €μ—κ²ŒλŠ” ν•΄λ‹Ήλ˜μ§€ μ•ŠμŒ).

@기리고 둜 같은 문제 =\

vendors.js:20314 Warning: Unknown prop `onTouchTap` on <button> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in button (created by EnhancedButton)
    in EnhancedButton (created by RaisedButton)
    in div (created by Paper)
    in Paper (created by RaisedButton)
    in RaisedButton
    in MuiThemeProvider

λ Œλ” 전후에 injectionTapEventPlugin() μ‚¬μš© 여뢀에 관계없이. 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?

@tavurth 의 μ œμ•ˆμ„ μΆ”κ°€ν•˜κ³  였λ₯˜λ₯Ό μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” μ„±κ³΅μ μœΌλ‘œ λ‹€μŒ μž₯μ†Œμ—μ„œ 그것을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

  • 였λ₯˜λ₯Ό μƒμ„±ν•˜λŠ” ꡬ성 μš”μ†Œμ—μ„œ
  • 경둜 파일
  • app.js 파일
  • ReactDOM.renderκ°€ ν˜ΈμΆœλ˜λŠ” 파일

λ‚˜λŠ” 그것을 ReactDOM.render νŒŒμΌμ— λ°°μΉ˜ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();

prop titleStyle이 μžˆλŠ” CardTitleμ—μ„œ λ™μΌν•œ 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€...

warning.js:44 Warning: Unknown prop `titleStyle` on <div> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in div (created by CardTitle)
    in CardTitle (created by GroupAdmin)
    in div (created by Card)
    in div (created by Paper)
    in Paper (created by Card)
    in Card (created by GroupAdmin)
    in span (created by GroupAdmin)
    in GroupAdmin (created by Operations)

μ½”λ“œ 쑰각: <CardTitle title="Group Admin" titleStyle={styles.title}/>

머티리얼 UI 버전: 0.15.2

정말 κ³ λ§ˆμ›Œ.

μ•ˆλ…•ν•˜μ„Έμš”,

λ‚΄ 것이 κ΄€λ ¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ <Chip> 을 μ‚¬μš©ν•  λ•Œ 이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

Unknown prop labelColor on <div> tag.

λ‚˜λ₯Ό μœ„ν•΄ 동일 :

κ²½κ³ : νƒœκ·Έ 에 μ•Œ 수 μ—†λŠ” translate μ†Œν’ˆμ΄ μžˆμŠ΅λ‹ˆλ‹€. μš”μ†Œμ—μ„œ 이 μ†Œν’ˆμ„ μ œκ±°ν•©λ‹ˆλ‹€.

그리고 λ‚˜λŠ” μΆ”κ°€ν•©λ‹ˆλ‹€ :

import injectTapEventPlugin from 'react-tap-event-plugin';

injectTapEventPlugin();

그리고 그것은 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ πŸ‘Ž

같은 κ²½κ³ κ°€ μžˆμŠ΅λ‹ˆλ‹€. λͺ‡ 가지 디버깅 후에 이 μ½”λ“œμ—μ„œ λ°œμƒν•œλ‹€λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

const MenuLeftItem =
  ({text,url}) =>
    <ListItem
      className="menuleft-module-item"
      primaryText={text}
    />

그리고

<AppBar
   title="Admin Panel"
   iconElementLeft={
      <IconButton>
         <NavigationClose />
      </IconButton>
    }
     onClick={onCollapse}
  />

이것은 λ‚΄ package.jsonμž…λ‹ˆλ‹€.

"dependencies": {
    "brace": "^0.8.0",
    "d3": "^4.2.2",
    "deepmerge": "^0.2.10",
    "dom-value": "^1.0.1",
    "form-controls": "^1.0.0",
    "form-parse": "^0.1.0",
    "form-urlencoded": "^1.2.1",
    "formsy-material-ui": "^0.5.0",
    "formsy-react": "^0.18.1",
    "is-submittable": "^1.0.0",
    "isomorphic-fetch": "^2.2.1",
    "js-beautify": "^1.5.10",
    "lodash": "^4.14.1",
    "material-ui": "^0.15.4",
    "muicss": "^0.7.3",
    "query-string": "^4.2.2",
    "radium": "^0.18.1",
    "rd3": "^0.7.1",
    "react": "^15.3.1",
    "react-ace": "^3.1.0",
    "react-diff": "0.0.6",
    "react-dimensions": "^2.0.0-alpha1",
    "react-dom": "^15.3.1",
    "react-edit-inline": "^1.0.6",
    "react-graph-vis": "0.0.3",
    "react-hotkeys": "^0.9.0",
    "react-modal": "^1.4.0",
    "react-notification": "^6.1.0",
    "react-redux": "^4.0.6",
    "react-router": "^2.6.1",
    "react-syntax-highlighter": "^2.0.3",
    "react-tap-event-plugin": "^1.0.0",
    "reactable": "^0.14.0",
    "recompose": "^0.20.0",
    "reduce": "^1.0.1",
    "redux": "^3.0.6",
    "redux-actions": "^0.11.0",
    "redux-localstorage": "^0.4.0",
    "redux-saga": "^0.11.0",
    "redux-thunk": "^2.1.0",
    "reduxerit": "^0.4.1",
    "reselect": "^2.0.3",
    "sha1": "^1.1.1",
    "sleep-promise": "^2.0.0",
    "squares": "^0.2.1",
    "uuid": "^2.0.2",
    "vis": "^4.16.1"
  }
}

injectTapEventPlugin() λ₯Ό 좔가해도 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” 그것이 λ°˜μ‘ HMR ν”ŒλŸ¬κ·ΈμΈκ³Ό 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ°˜μ‘μ˜ UMD 버전 μ‚¬μš©μ—μ„œ λͺ¨λ“  것을 webpack-ing으둜 μ „ν™˜ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. react-tap-event-plugin 및 material-ui의 일뢀 콀보가 React의 λΉ„κ³΅κ°œ 내뢀에 도달해야 ν•˜κ³  UMD λ²„μ „μ—μ„œλŠ” 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†κΈ° λ•Œλ¬Έμ— 이것이 μˆ˜μ •λ  것이라고 μƒκ°ν•©λ‹ˆλ‹€. ν•œμˆ¨μ„ 쉬닀...

μ˜€λ²„λ ˆμ΄μ— λŒ€ν•΄ λ™μΌν•œ κ²½κ³ κ°€ μžˆμŠ΅λ‹ˆλ‹€.

Warning: Unknown prop `onTouchTap` on <div> tag. Remove this prop from the element. For details, see https://fb.me/react-unknown-prop
    in div (created by Overlay)
    in Overlay (created by DialogInline)
    in div (created by DialogInline)
    in DialogInline

λ˜ν•œ μ—¬κΈ° https://github.com/facebook/react/issues/436 μ—μ„œ react-tap-event-plugin이 λ°˜μ‘ 15 이후 제거될 수 μžˆλ‹€λŠ” 것을 μ½μ—ˆμŠ΅λ‹ˆλ‹€. 쑰사가 ν•„μš”ν•©λ‹ˆλ‹€.

@tavurth에 μ˜ν•΄ κ·Όλ³Έ λ¬Έμ œκ°€ μ‹λ³„λ˜μ—ˆμœΌλ―€λ‘œ 이 문제λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€. 감사 ν•΄μš”!

μš°λ¦¬λŠ” onTouchTap 속성을 μΆ”κ°€ν•˜κΈ° μœ„ν•΄ react-tap-event-plugin 에 μ˜μ‘΄ν•©λ‹ˆλ‹€.
사싀, Reactκ°€ 이 κ²½κ³ λ₯Ό μΆ”κ°€ν•΄μ„œ κΈ°μ©λ‹ˆλ‹€. λ¬Έμ„œμ—μ„œ 이 μš”μ μ„ λ†“μΉ˜λŠ” λ§Žμ€ μ‚¬λžŒλ“€μ—κ²Œ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

μ•žμœΌλ‘œ next λΆ„κΈ°μ—μ„œ 이 쒅속성을 μ œκ±°ν•  κ³„νšμž…λ‹ˆλ‹€.
μ΅œμ‹  λͺ¨λ°”일 μž₯μΉ˜κ°€ 더 잘 μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— onClick 이벀트λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€(지연 μ—†μŒ).

λ‚˜λŠ” AppBarλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆκ³  λ‹€μŒμ€ μœ„μ˜ 주석에 따라 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.

const Header = React.createClass({
handleClick(e){
console.log("reached here::");
},
render(){
injectTapEventPlugin();
return <AppBar title="Some Heading" onTitleTouchTap={this.handleClick()}/>
}
});

export default Header;

이 문제λ₯Ό λ°œκ²¬ν•˜κ³  μˆ˜μ • 사항을 μ μš©ν•˜κ³  λ¬Έμ œκ°€ μ§€μ†λ˜λŠ” 저와 같은 μ‚¬λžŒλ“€μ„ μœ„ν•΄: injectTapEventPlugin() 싀행에 λŒ€ν•œ μ œμ•ˆλœ μ ‘κ·Ό 방식은 WebPack을 μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λ§Œ μž‘λ™ν•©λ‹ˆλ‹€. λ‚΄ 앱을 browserifyμ—μ„œ webpack으둜 λ³€κ²½ν•˜κ³  μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šμ•˜μœΌλ©° 였λ₯˜κ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

λˆ„κ΅¬λ“ μ§€ 여기에 무엇을 μœ„ν•΄ μ£Όμž… νƒ­ 이벀트 ν”ŒλŸ¬κ·ΈμΈ()이 μžˆλŠ”μ§€ 말해 쀄 수 μžˆμŠ΅λ‹ˆκΉŒ?

@jakewins : λ‚˜λŠ” browserify와 같은 λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” λ‚΄κ°€ 전체 ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œλ‘œ vendor.js와 ν•˜λ‚˜μ˜ js νŒŒμΌμ„ λ§Œλ“€κ³  μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚˜λŠ” react-event-tap-plugin이 λ‹Ήμ‹ μ˜ react libκ°€ μžˆλŠ” js 파일 μ•ˆμ— λ²ˆλ“€λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 μ ‘κ·Ό 방식은 browserify의 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

같은 λ¬Έμ œμž…λ‹ˆλ‹€. @vaspoz

react-tap-event-plugin이 ^2.0.0κΉŒμ§€ μ˜¬λΌκ°€κ³  λ°˜μ‘μ΄ 15.4.0에 λ„λ‹¬ν•˜λŠ” 것과 관련이 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. UMD λΉŒλ“œλ₯Ό μ‚¬μš©ν•˜κ³  ReactDOM.render 이전에 injectTapEventPlugin을 ν˜ΈμΆœν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λΉ„ UMD λΉŒλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 λΆˆν–‰νžˆλ„ μ˜΅μ…˜μ΄ μ•„λ‹™λ‹ˆλ‹€.

react + react-tap-event-plugin + material-ui의 UMD 버전 쑰합이 μž‘λ™ν•˜λŠ” μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

@oliviertassinari 더 λ§Žμ€ λ„€μ΄ν‹°λΈŒ onClick이 μžˆλŠ” λ‹€μŒ 브랜치λ₯Ό μ‚¬μš©ν•΄λ„ μΆ©λΆ„νžˆ μ•ˆμ •μ μΌκΉŒμš”? 반쯀 μ‚¬μš©ν•  수 μžˆλŠ” ν•œ λ§Žμ€ 것이 망가져도 상관 μ—†μŠ΅λ‹ˆλ‹€.

더 λ§Žμ€ λ„€μ΄ν‹°λΈŒ onClick이 μžˆλŠ” λ‹€μŒ λΆ„κΈ°λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μΆ©λΆ„νžˆ μ•ˆμ •μ μž…λ‹ˆκΉŒ?

@vans163 λ‹€μŒμ€ next λΆ„κΈ°μ˜ 1κ°œμ›” 된 λ²„μ „μž…λ‹ˆλ‹€. http://material-ui-next.azurewebsites.net/. μ•ˆμ •μ΄ 무엇을 μ˜λ―Έν•˜λŠ”μ§€μ— 따라 λ‹€λ¦…λ‹ˆλ‹€.
ν•„μš”ν•œ 경우 APIκ°€ λ³€κ²½λ©λ‹ˆλ‹€. 일뢀 ꡬ성 μš”μ†Œλ§Œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜λ˜μ—ˆμœΌλ©° μ’…μ’… λΆ€λΆ„μ μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜λ„ 이 λΆ„κΈ°λ₯Ό 100% μ‚¬μš©ν•˜λ„λ‘ 앱을 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μƒˆ λ¦΄λ¦¬μŠ€κ°€ 쀀비될 λ•ŒκΉŒμ§€ λˆ„κ΅°κ°€μ—κ²Œ 도움이 λ˜λŠ” 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬: 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμ§€λ§Œ 일단

import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();

ꡬ성 μš”μ†Œ κ³„μΈ΅μ—μ„œ <MuiThemeProvider> λ₯Ό μ μš©ν•˜λŠ” ꡬ성 μš”μ†Œ νŒŒμΌμ— 쀄을 μΆ”κ°€ν•˜λ©΄ μž‘λ™ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. (λ˜ν•œ redux에 λŒ€ν•œ mapStateToPropsλ₯Ό μˆ˜ν–‰ν•˜λŠ” 곳이기도 ν•˜μ§€λ§Œ 관련이 μ—†λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.) 이전에 λž˜ν•‘ ꡬ성 μš”μ†Œ 역할을 ν•˜λŠ” μƒμœ„ ꡬ성 μš”μ†Œμ˜ νŒŒμΌμ— μ μš©ν•œ 적이 μžˆμŠ΅λ‹ˆλ‹€.

create-app-react μ—μ„œ κΊΌλ‚Έ μ›ΉνŒ©μ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

@rdnewman μž‘λ™ν•©λ‹ˆλ‹€!!

정말 κ³ λ§™μŠ΅λ‹ˆλ‹€!

λͺ¨λ‘ κ°μ‚¬ν•©λ‹ˆλ‹€ ... ν…ŒμŠ€νŠΈμ—μ„œλ§Œμ΄ κ²½κ³ κ°€ μžˆμ—ˆκ³  ꡬ성 μš”μ†Œλ₯Ό ν…ŒμŠ€νŠΈν•˜λŠ” κ³Όμ •μ—μ„œ injectTapEventPlugin() κ°€ ν˜ΈμΆœλ˜μ§€ μ•Šκ³  μ™„μ „ν•œ μ•±μ—μ„œλ§Œ ν˜ΈμΆœλ˜μ—ˆμŒμ„ κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.

@rdnewman , κ°μ‚¬ν•©λ‹ˆλ‹€! λ‹Ήμ‹ μ˜ 방법이 μž‘λ™ν•©λ‹ˆλ‹€. λ‚˜λŠ” 그것을 ReactDOM.render λ©”μ†Œλ“œ 파일이 ν¬ν•¨λœ index.js νŒŒμΌμ— λ„£μ—ˆκ³  그것은 λ˜ν•œ κ·Έλ ‡κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. πŸ‘

μ§€λ‚œ 주에 create-react-app λ₯Ό μ‚¬μš©ν•˜μ—¬ 이것이 λ‚˜μ™”μŠ΅λ‹ˆλ‹€. ReactλŠ” 15.4.x에 λ“€μ–΄μ™”κ³  이 였λ₯˜λŠ” injectTapEventPlugin() μ μ ˆν•˜κ²Œ ν˜ΈμΆœν–ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  λ°œμƒν•©λ‹ˆλ‹€. 이것은 react-tap-event-plugin #85 μ—μ„œ λ…Όμ˜λ©λ‹ˆλ‹€. 2.0.0 react-tap-event-plugin λ₯Ό μˆ˜λ™μœΌλ‘œ μ €μž₯/μ„€μΉ˜ν•˜λ©΄ 이 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

typescriptλ₯Ό μ‚¬μš©ν•˜λŠ” λˆ„κ΅°κ°€λ₯Ό 돕기λ₯Ό λ°”λžλ‹ˆλ‹€.
typescript와 ν•¨κ»˜ material-uiλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”λ° λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
μΆ”κ°€ ν›„
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();
ReactDOM.render 전에 μ½”λ“œμ—μ„œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

μž‘νžˆμ§€ μ•Šμ€ TypeError: react_tap_event_plugin_1.defaultλŠ” ν•¨μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

κ°€μ Έμ˜€κΈ° μŠ€νƒ€μΌμ„ λ³€κ²½ν•˜μ—¬ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
import * as injectTapEventPlugin from 'react-tap-event-plugin';

κ°μ‚¬ν•©λ‹ˆλ‹€. μš”μ¦˜μ—λŠ” react-tap-event-plugin 버전 2.0.1κ³Ό react 15.4.2만 μ„€μΉ˜ν•˜λ©΄ λ©λ‹ˆλ‹€. 그런 λ‹€μŒ 앱을 λ Œλ”λ§ν•˜λŠ” 파일둜 μ΄λ™ν•˜μ—¬ λ‹€μŒ 두 μ€„λ§Œ ν¬ν•¨ν•˜λ©΄ λ©λ‹ˆλ‹€.

'react-tap-event-plugin'μ—μ„œ injectTapEventPlugin을 κ°€μ Έμ˜΅λ‹ˆλ‹€.
μ£Όμž…νƒ­μ΄λ²€νŠΈν”ŒλŸ¬κ·ΈμΈ();

그리고 λ°”λ‘œ πŸ‘

λ‹΅λ‹΅ν•  μ •λ„λ‘œ λͺ¨ν˜Έν•œ 문제. SSR μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 일뢀 μ½”λ“œ μž¬κ΅¬μ„±μ„ μˆ˜ν–‰ν•œ ν›„ λŒμ•„μ™”μŠ΅λ‹ˆλ‹€.

"λ°˜μ‘"의 경우: "15.4.2",

"react-tap-event-plugin": "^2.0.0" λ˜λŠ” react-tap-event-plugin": "^2.0.1"을 μ‚¬μš©ν•˜μ„Έμš”.

그리고 이것을 μΆ”κ°€
// onTouchTap에 ν•„μš”

import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();

injectionTapEventPlugin() κ°€μ Έμ˜€κΈ° 및 μΆ”κ°€λ‘œ λ‚΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

import injectTapEventPlugin from 'react-tap-event-plugin;

componentWillMount(){
    injectTapEventPlugin();
    }

Next.JSλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이 μ†”λ£¨μ…˜μ€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 각 νŽ˜μ΄μ§€λ₯Ό κ°€μ Έμ˜€λŠ” tap_events.js 파일이 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄ 파일 tap_events.js:
'react-tap-event-plugin'μ—μ„œ insertTapEventPlugin κ°€μ Έμ˜€κΈ°
if (μ°½ μœ ν˜• !== 'μ •μ˜λ˜μ§€ μ•ŠμŒ') μ£Όμž…TapEventPlugin()

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰