tomchentw/react-toastr

React.createFactory has been deprecated since v16.13.0 but react-toastr still uses it

pocke opened this issue · 2 comments

pocke commented

Problem

React.createFactory has been deprecated since React v16.13.0.
https://github.com/facebook/react/releases/tag/v16.13.0
https://reactjs.org/docs/react-api.html#createfactory

But react-toastr uses createFactory function, so it causes a warning.

Warning: React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.

toastMessageFactory: React.createFactory(ToastMessageAnimated),

Solution idea

I think we can just replace it with a function component.
For example:

- toastMessageFactory: React.createFactory(ToastMessageAnimated), 
+ toastMessageFactory: (props) => <ToastMessageAnimated {...props} />,

The React documentation also recommends this solution.

This helper is considered legacy, and we encourage you to either use JSX or use React.createElement() directly instead.
https://reactjs.org/docs/react-api.html#createfactory

If you like this idea, I'll open a pull request with the patch.

Thanks!

This project seems abandoned. I think the best solution would be to fork it and try to maintain it on another branch.

pocke commented

I've created a fork version of react-toastr as @bitjourney/react-toastr for React v17.
https://github.com/bitjourney/react-toastr
https://www.npmjs.com/package/@bitjourney/react-toastr

We use the forked package, but we still use React v16 due to another problem.

I do not have a plan to maintain the forked package for the long term because we're considering switching another toast library from react-toastr. So, I recommend creating another fork if someone wants to maintain it.