baruchiro / use-route-as-state

Use React Router route and query string as component state
https://baruchiro.github.io/use-route-as-state/
MIT License
42 stars 7 forks source link

react-router-dom v6 support? #172

Open d9k opened 2 years ago

d9k commented 2 years ago
✘ [ERROR] No matching export in "node_modules/react-router-dom/index.js" for import "useRouteMatch"

    node_modules/use-route-as-state/dist/index.es.js:2:22:
      2 │ import { useLocation, useRouteMatch, useHistory, generatePath } from 'react-r..$
        ╵                       ~~~~~~~~~~~~~

✘ [ERROR] No matching export in "node_modules/react-router-dom/index.js" for import "useHistory"

    node_modules/use-route-as-state/dist/index.es.js:2:37:

https://reactrouter.com/docs/en/v6/upgrading/v5

d9k commented 2 years ago

useHistory -> useNavigate useRouteMatch -> useMatch

baruchiro commented 2 years ago

Thanks, you're welcome to suggest a PR for it!

I will try to take it soon.

d9k commented 2 years ago

https://github.com/pbeshai/use-query-params/ solved react router v6 compatibilty

see: https://github.com/pbeshai/use-query-params/blob/master/examples/react-router-6/src/index.js https://github.com/pbeshai/use-query-params/issues/196#issuecomment-996893750

ramirez commented 2 years ago

useRouteMatch -> useMatch

useMatch() expects a parameter, whereas in use-route-as-state, useRouteMatch() is called with no parameters, so it is not a direct replacement.

baruchiro commented 2 years ago

I need some help here.

If there are breaking changes in react-router-dom, how can I support both v5 and v6 in my library? Do I need to create a separate branch and versions for that?

s-roueche commented 2 years ago

Hi @baruchiro

In my opinion, you shouldn't support V5 and V6 in same time in your library.

Create a new major version of you library who indicate that react-router v5 it's doesn't support anymore. If someone want to use react-router V5, it can use the previous major version of your library.

baruchiro commented 2 years ago

Hi @s-roueche, thanks!

I think it means that I have two options. One is to stop supporting V5, and the other one is to maintain two branches.

Since V6 is still not stable and since the migration is a big issue, I think I need to choose option two.

WDYT?

SRloreal commented 2 years ago

If you take a look to the historical version of react-router-dom, you can see they don't work a lot on version V5 anymore.

You can still create two branches, I think you won't have a lot of work to do for the version 5 in the futur.

About the version 6, you can see now on npm, that the version 6 is almost 3 times more downloaded than the version 5. In my opinion, migrate to the version 6 it's a good option 👍

SRloreal commented 2 years ago

If you want I started to implement the migration to v6 on a personal branch.

There are just 4 tests failed.... I don't really understand how to fixe it 😓

If you want I can push it on your repo ?

baruchiro commented 2 years ago

Yes, sure! Thank you, I will be happy to see your branch.

I also did some local work for the upgrade, and also failed on tests, you can see it here: https://github.com/baruchiro/use-route-as-state/pull/176.

s-roueche commented 2 years ago

I wasn't able to push my branch on your repo because I don't have the permission.

Can you give me the permission to do it ?

my username is @s-roueche

baruchiro commented 2 years ago

You should push your fork and open a PR.

Use gh pr create with the Github CLI.

s-roueche commented 2 years ago

It's done.

jschwindt commented 1 year ago

I wrote my own package to handle state using search params with react-router-dom-v6: https://github.com/jschwindt/react-use-search-params-state

baruchiro commented 1 year ago

I wrote my own package to handle state using search params with react-router-dom-v6: https://github.com/jschwindt/react-use-search-params-state

@jschwindt Why not implement it here?

jschwindt commented 1 year ago

I wrote my own package to handle state using search params with react-router-dom-v6: https://github.com/jschwindt/react-use-search-params-state

@jschwindt Why not implement it here?

I extracted it from an app that I was working on, and the usage is slightly different. I commented here just in case it is useful for somebody else.

ramirez commented 10 months ago

Will there be a version compatible with v6 or will this be staying with v5?

baruchiro commented 8 months ago

I will deprecate this package.