Closed MOZGIII closed 6 years ago
Hey @MOZGIII, from the stack trace, it looks like render
isn't being called for the component.
Maybe it's just not in a stack trace? I'd expect commitLifeCycles
to probably have called render
s before the componentDidMount
s (and having it return before the calls to componentDidMount
).
If render
is being called, then maybe ref
isn't. https://github.com/ankane/react-chartkick/blob/395e2b0d1d89d699fe7333230961e581b3584bb2/index.js#L55
I'm sure that ref
is called as well. However, tests may do shallow rendering of some kind. Then it's possible for ref
to be called with null
.
On the other look, it's probably a variable scope leak error.
https://github.com/ankane/react-chartkick/blob/395e2b0d1d89d699fe7333230961e581b3584bb2/index.js#L31
Here you call the function with this.element
, but I think you need to create a local scope copy before doing that, like this:
var localElement = this.element;
new props.chartType(localElement, data, options)
This has to do with JavaScript's variable semantics.
If ref
is called with null
, it would explain the error. Not sure I follow the scope leak error theory.
ref
will also be called with null
on unmounting.
Regardless of the reason, checking that this.element
is not falsy would fix the issue here.
Scope leak error is about variable being assigned the new value, and other code (typically a closure) that sees that variable in it's scope not being ready for it's value to change (assuming the closure has a local copy of the variable). Though, this is not the case here (my bad), because the code there is all synchronous and correct. Calling a function (line 31) implies assignment of it's arguments, and the code's not async, so nothing breaks before that - that means I'm wrong about the scope leak error.
I'd suggest adding a check for now. To debug the issue properly there has to be a jest testing setup made. Probably a good idea to have one anyway. Unfortunately I can' help with that right now, but it's pretty easy to set up.
Thanks
I'm using a create-react-app based code base, and when I run tests I have the following errors:
The issue is somewhere in chartkick.