CezaryDanielNowak / React-dotdotdot

Multiline text ellipsis for react. Demo:
https://nowak.click/react-dotdotdot/
MIT License
401 stars 54 forks source link

not working with preact #24

Closed thinkkevin closed 6 years ago

thinkkevin commented 7 years ago

I am trying to replace react with preact using preact-compat. Then I got issue in console that hard to find any clue:

preact.esm.js:212 Uncaught (in promise) TypeError: value is not a function
    at setAccessor (preact.esm.js:212)
    at diffAttributes (preact.esm.js:555)
    at idiff (preact.esm.js:401)
    at diff (preact.esm.js:306)
    at renderComponent (preact.esm.js:727)
    at renderComponent (preact.esm.js:712)
    at setComponentProps (preact.esm.js:634)
    at buildComponentFromVNode (preact.esm.js:814)
    at idiff (preact.esm.js:355)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at diff (preact.esm.js:306)
    at renderComponent (preact.esm.js:727)
    at setComponentProps (preact.esm.js:634)
    at buildComponentFromVNode (preact.esm.js:814)
    at idiff (preact.esm.js:355)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at diff (preact.esm.js:306)
    at renderComponent (preact.esm.js:727)
    at setComponentProps (preact.esm.js:634)
    at buildComponentFromVNode (preact.esm.js:814)
    at idiff (preact.esm.js:355)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at diff (preact.esm.js:306)
    at renderComponent (preact.esm.js:727)
    at renderComponent (preact.esm.js:712)
    at renderComponent (preact.esm.js:712)
    at setComponentProps (preact.esm.js:634)
    at buildComponentFromVNode (preact.esm.js:814)
    at idiff (preact.esm.js:355)
    at innerDiffNode (preact.esm.js:474)
    at idiff (preact.esm.js:397)
    at diff (preact.esm.js:306)
    at renderComponent (preact.esm.js:727)
    at setComponentProps (preact.esm.js:634)
    at buildComponentFromVNode (preact.esm.js:814)
    at idiff (preact.esm.js:355)
    at innerDiffNode (preact.esm.js:474)

After trying to add/remove kinds of component, I found this module is the cause.

The reason for it, either ref="container" , or this.refs.container doesn't work. I tried to change the code like:

//...
Dotdotdot.prototype.componentDidMount = function() {
  this.dotdotdot(ReactDOM.findDOMNode(this.container));
  window.addEventListener('resize', this.update, false);
};
//...
Dotdotdot.prototype.componentDidUpdate = function() {
  this.dotdotdot(ReactDOM.findDOMNode(this.container));
};
//...
Dotdotdot.prototype.render = function() {
  var _ref = function (container) {
    this.container = container;
  }.bind(this);
  return React.createElement(
    "div",
    { ref: _ref,
    className: this.props.className },
    this.props.children
  );
};

Then it worked.

CezaryDanielNowak commented 6 years ago

Your PR is merged, please test if works OK with version 1.2.1

Regards :)