-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Replace usage of useEvent with useCallback #98
Conversation
✅ Deploy Preview for doist-typist ready!
To edit notification comments on pull requests, go to your Netlify site settings. |
@rfgamaral What do you think about this change? Can you share any context around why we opted for |
Before using With that said, I was first introduced to I don't have more context than that, and |
@rfgamaral My biggest concern here is that we don't introduce some weird behavior like the editor state being erased during normal usage because of this change (which, IIRC, is why we started using |
@pawelgrimm I honestly cannot say if that will be the case or not. I don't think we'll introduce weird behaviour with this change, because like I said, I added it here "just because", no good reason, and probably shouldn't have. However, to avoid going back and forth with Typist releases (and updating Todoist), may I suggest that we apply a patch on If you go that route, please be careful with the current patch, and keep it around, it's still needed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since useEvent
is no longer used on Typist itself, we also need to move "react-use-event-hook": "^0.9.3",
from peerDependencies
to devDependencies
(don't forget to remove the ^
from the version number when moving it to devDependencies
, and make sure the alphabetical order is kept).
@pawelgrimm I think we can proceed with this, don't you think? As a reminder, don't forget to do the change I requested above, and also change the PR title from Then feel free to update Todoist with the new version (and don't forget to revert the patch to the previous version). |
The `useEvent` function was being called during rendering, which throws an error when React's Strict Mode is enabled. This type of usage is incorrect because it makes the rendering result non-determinisitic. See reactjs/rfcs#220 (comment)
c4753fc
to
0cb3d52
Compare
Change was implemented as requested
## [1.0.16](v1.0.15...v1.0.16) (2023-02-22) ### Bug Fixes * Replace usage of useEvent with useCallback ([#98](#98)) ([3b175f7](3b175f7))
🎉 This PR is included in version 1.0.16 🎉 The release is available on: Your semantic-release bot 📦🚀 |
## 1.0.0 (2023-08-12) ### Features * Add the `PasteHTMLTableAsString` extension ([Doist#290](https://github.com/jerrywcy/memos-typist-editor/issues/290)) ([ee90014](ee90014)) * Allow all marks to coexist with the Code mark ([Doist#309](https://github.com/jerrywcy/memos-typist-editor/issues/309)) ([ac06735](ac06735)) * Disallow suggestions inside inline code marks and code blocks ([Doist#154](https://github.com/jerrywcy/memos-typist-editor/issues/154)) ([7d75314](7d75314)) * Initial Typist implementation ([19451ab](19451ab)) * **serializers:** Add `get*` functions for reusable singular instances ([Doist#88](https://github.com/jerrywcy/memos-typist-editor/issues/88)) ([b2c77c3](b2c77c3)) * TaskItem and TaskList extension ([5db1900](5db1900)) ### Bug Fixes * `insertMarkdownContent` didn't insert Markdown correctly in plain-text documents ([Doist#13](https://github.com/jerrywcy/memos-typist-editor/issues/13)) ([74cc623](74cc623)) * Add required ProseMirror dependencies to package ([Doist#73](https://github.com/jerrywcy/memos-typist-editor/issues/73)) ([cd605c0](cd605c0)) * Add support for literal autolinks (GFM based) ([Doist#303](https://github.com/jerrywcy/memos-typist-editor/issues/303)) ([4537091](4537091)) * Add support for query params in `RichTextLink` extension ([Doist#4](https://github.com/jerrywcy/memos-typist-editor/issues/4)) ([9fac158](9fac158)) * Bold and Italic now use *** and ___ instead of ** and __ ([cc29ea9](cc29ea9)) * change to memos-typist-editor in package.json ([c8250b1](c8250b1)) * **deps:** Migrate ProseMirror dependencies to `@tiptap/pm` package ([Doist#151](https://github.com/jerrywcy/memos-typist-editor/issues/151)) ([d2a8eae](d2a8eae)) * **deps:** update dependency prosemirror-codemark to v0.4.2 ([Doist#34](https://github.com/jerrywcy/memos-typist-editor/issues/34)) ([58938a1](58938a1)) * **deps:** update dependency prosemirror-model to v1.18.2 ([Doist#25](https://github.com/jerrywcy/memos-typist-editor/issues/25)) ([5d1fc1b](5d1fc1b)) * **deps:** update dependency prosemirror-model to v1.18.3 ([Doist#30](https://github.com/jerrywcy/memos-typist-editor/issues/30)) ([54bfd56](54bfd56)) * **deps:** update dependency prosemirror-view to v1.29.1 ([Doist#26](https://github.com/jerrywcy/memos-typist-editor/issues/26)) ([9f86a5e](9f86a5e)) * **deps:** update dependency unist-util-remove to v4 ([Doist#380](https://github.com/jerrywcy/memos-typist-editor/issues/380)) ([6c5430a](6c5430a)) * **deps:** update gfm autolink literal packages to v2 (major) ([Doist#378](https://github.com/jerrywcy/memos-typist-editor/issues/378)) ([7ad9af8](7ad9af8)) * **deps:** update gfm strikethrough packages to v2 (major) ([Doist#379](https://github.com/jerrywcy/memos-typist-editor/issues/379)) ([b1e411d](b1e411d)) * **deps:** update tiptap packages to v2.0.0 ([Doist#198](https://github.com/jerrywcy/memos-typist-editor/issues/198)) ([fe4aa82](fe4aa82)) * **deps:** update tiptap packages to v2.0.0-beta.200 ([Doist#3](https://github.com/jerrywcy/memos-typist-editor/issues/3)) ([6e977a9](6e977a9)) * **deps:** update tiptap packages to v2.0.0-beta.202 ([Doist#9](https://github.com/jerrywcy/memos-typist-editor/issues/9)) ([ce43f74](ce43f74)) * **deps:** update tiptap packages to v2.0.0-beta.203 ([Doist#35](https://github.com/jerrywcy/memos-typist-editor/issues/35)) ([2188bc6](2188bc6)) * **deps:** update tiptap packages to v2.0.0-beta.204 ([Doist#38](https://github.com/jerrywcy/memos-typist-editor/issues/38)) ([cb5b359](cb5b359)) * **deps:** update tiptap packages to v2.0.0-beta.205 ([Doist#54](https://github.com/jerrywcy/memos-typist-editor/issues/54)) ([2074402](2074402)) * **deps:** update tiptap packages to v2.0.0-beta.206 ([Doist#59](https://github.com/jerrywcy/memos-typist-editor/issues/59)) ([27e0f26](27e0f26)) * **deps:** update tiptap packages to v2.0.0-beta.207 ([Doist#63](https://github.com/jerrywcy/memos-typist-editor/issues/63)) ([da9889f](da9889f)) * **deps:** update tiptap packages to v2.0.0-beta.209 ([Doist#75](https://github.com/jerrywcy/memos-typist-editor/issues/75)) ([97a41c5](97a41c5)) * **deps:** update tiptap packages to v2.0.0-beta.215 ([Doist#129](https://github.com/jerrywcy/memos-typist-editor/issues/129)) ([af22d22](af22d22)) * **deps:** update tiptap packages to v2.0.0-beta.216 ([Doist#135](https://github.com/jerrywcy/memos-typist-editor/issues/135)) ([3d31a2e](3d31a2e)) * **deps:** update tiptap packages to v2.0.0-beta.217 ([Doist#136](https://github.com/jerrywcy/memos-typist-editor/issues/136)) ([eebba15](eebba15)) * **deps:** update tiptap packages to v2.0.0-beta.218 ([Doist#148](https://github.com/jerrywcy/memos-typist-editor/issues/148)) ([0e9e179](0e9e179)) * **deps:** update tiptap packages to v2.0.0-beta.220 ([Doist#158](https://github.com/jerrywcy/memos-typist-editor/issues/158)) ([c7fc3d8](c7fc3d8)) * **deps:** update tiptap packages to v2.0.0-rc.1 ([Doist#192](https://github.com/jerrywcy/memos-typist-editor/issues/192)) ([26d090a](26d090a)) * **deps:** update tiptap packages to v2.0.0-rc.2 ([Doist#195](https://github.com/jerrywcy/memos-typist-editor/issues/195)) ([8753f13](8753f13)) * **deps:** update tiptap packages to v2.0.1 ([Doist#201](https://github.com/jerrywcy/memos-typist-editor/issues/201)) ([e31cb2f](e31cb2f)) * **deps:** update tiptap packages to v2.0.2 ([Doist#212](https://github.com/jerrywcy/memos-typist-editor/issues/212)) ([200b339](200b339)) * **deps:** update tiptap packages to v2.0.3 ([Doist#226](https://github.com/jerrywcy/memos-typist-editor/issues/226)) ([a1953b0](a1953b0)) * **docs:** correct the render function name ([Doist#50](https://github.com/jerrywcy/memos-typist-editor/issues/50)) ([45dd681](45dd681)) * Extra paragraph node inserted above an Horizontal Rule ([Doist#313](https://github.com/jerrywcy/memos-typist-editor/issues/313)) ([3852309](3852309)) * **factories:** Allow alphanumeric IDs for suggestion nodes in `createSuggestionExtension` ([Doist#66](https://github.com/jerrywcy/memos-typist-editor/issues/66)) ([a1726a6](a1726a6)) * **html-serializer:** Disables tokenizers if marks/nodes are not found in the editor schema ([Doist#86](https://github.com/jerrywcy/memos-typist-editor/issues/86)) ([0ed4a9b](0ed4a9b)) * **html-serializer:** Don't share instances between editors ([Doist#275](https://github.com/jerrywcy/memos-typist-editor/issues/275)) ([3aba8c7](3aba8c7)) * Invalid `hasCodeMarkBefore` check in `canInsertSuggestion` utility function ([Doist#156](https://github.com/jerrywcy/memos-typist-editor/issues/156)) ([21826c5](21826c5)) * **markdown-serializer:** Override Turndown escaping behaviour with custom rules ([Doist#102](https://github.com/jerrywcy/memos-typist-editor/issues/102)) ([6950afb](6950afb)) * **paste-markdown:** Incorrect paste behaviour when HTML source is VSCode ([Doist#260](https://github.com/jerrywcy/memos-typist-editor/issues/260)) ([3326796](3326796)) * Remove unused Tippy.js peer dependency ([Doist#56](https://github.com/jerrywcy/memos-typist-editor/issues/56)) ([85f87a5](85f87a5)) * Replace usage of useEvent with useCallback ([Doist#98](https://github.com/jerrywcy/memos-typist-editor/issues/98)) ([3b175f7](3b175f7)) * **rich-text-link:** More lenient regex for input/paste rule ([Doist#72](https://github.com/jerrywcy/memos-typist-editor/issues/72)) ([98e363f](98e363f)) * Task List now only toggle by typing `[ ]` in bullet list ([ae3103b](ae3103b)) * Unit-tests now support TaskItem and TaskList ([639abf6](639abf6)) ### Reverts * Revert "ci: Add support to publish experimental releases" (Doist#279) ([dc57964](dc57964)), closes [Doist#279](https://github.com/jerrywcy/memos-typist-editor/issues/279) [Doist#278](https://github.com/jerrywcy/memos-typist-editor/issues/278)
## 1.0.0 (2023-08-12) ### Features * Add the `PasteHTMLTableAsString` extension ([Doist#290](https://github.com/jerrywcy/memos-typist-editor/issues/290)) ([ee90014](ee90014)) * Allow all marks to coexist with the Code mark ([Doist#309](https://github.com/jerrywcy/memos-typist-editor/issues/309)) ([ac06735](ac06735)) * Disallow suggestions inside inline code marks and code blocks ([Doist#154](https://github.com/jerrywcy/memos-typist-editor/issues/154)) ([7d75314](7d75314)) * Initial Typist implementation ([19451ab](19451ab)) * **serializers:** Add `get*` functions for reusable singular instances ([Doist#88](https://github.com/jerrywcy/memos-typist-editor/issues/88)) ([b2c77c3](b2c77c3)) * TaskItem and TaskList extension ([5db1900](5db1900)) ### Bug Fixes * `insertMarkdownContent` didn't insert Markdown correctly in plain-text documents ([Doist#13](https://github.com/jerrywcy/memos-typist-editor/issues/13)) ([74cc623](74cc623)) * Add required ProseMirror dependencies to package ([Doist#73](https://github.com/jerrywcy/memos-typist-editor/issues/73)) ([cd605c0](cd605c0)) * Add support for literal autolinks (GFM based) ([Doist#303](https://github.com/jerrywcy/memos-typist-editor/issues/303)) ([4537091](4537091)) * Add support for query params in `RichTextLink` extension ([Doist#4](https://github.com/jerrywcy/memos-typist-editor/issues/4)) ([9fac158](9fac158)) * Bold and Italic now use *** and ___ instead of ** and __ ([cc29ea9](cc29ea9)) * change description in package.json ([52a2535](52a2535)) * change to memos-typist-editor in package.json ([c8250b1](c8250b1)) * **deps:** Migrate ProseMirror dependencies to `@tiptap/pm` package ([Doist#151](https://github.com/jerrywcy/memos-typist-editor/issues/151)) ([d2a8eae](d2a8eae)) * **deps:** update dependency prosemirror-codemark to v0.4.2 ([Doist#34](https://github.com/jerrywcy/memos-typist-editor/issues/34)) ([58938a1](58938a1)) * **deps:** update dependency prosemirror-model to v1.18.2 ([Doist#25](https://github.com/jerrywcy/memos-typist-editor/issues/25)) ([5d1fc1b](5d1fc1b)) * **deps:** update dependency prosemirror-model to v1.18.3 ([Doist#30](https://github.com/jerrywcy/memos-typist-editor/issues/30)) ([54bfd56](54bfd56)) * **deps:** update dependency prosemirror-view to v1.29.1 ([Doist#26](https://github.com/jerrywcy/memos-typist-editor/issues/26)) ([9f86a5e](9f86a5e)) * **deps:** update dependency unist-util-remove to v4 ([Doist#380](https://github.com/jerrywcy/memos-typist-editor/issues/380)) ([6c5430a](6c5430a)) * **deps:** update gfm autolink literal packages to v2 (major) ([Doist#378](https://github.com/jerrywcy/memos-typist-editor/issues/378)) ([7ad9af8](7ad9af8)) * **deps:** update gfm strikethrough packages to v2 (major) ([Doist#379](https://github.com/jerrywcy/memos-typist-editor/issues/379)) ([b1e411d](b1e411d)) * **deps:** update tiptap packages to v2.0.0 ([Doist#198](https://github.com/jerrywcy/memos-typist-editor/issues/198)) ([fe4aa82](fe4aa82)) * **deps:** update tiptap packages to v2.0.0-beta.200 ([Doist#3](https://github.com/jerrywcy/memos-typist-editor/issues/3)) ([6e977a9](6e977a9)) * **deps:** update tiptap packages to v2.0.0-beta.202 ([Doist#9](https://github.com/jerrywcy/memos-typist-editor/issues/9)) ([ce43f74](ce43f74)) * **deps:** update tiptap packages to v2.0.0-beta.203 ([Doist#35](https://github.com/jerrywcy/memos-typist-editor/issues/35)) ([2188bc6](2188bc6)) * **deps:** update tiptap packages to v2.0.0-beta.204 ([Doist#38](https://github.com/jerrywcy/memos-typist-editor/issues/38)) ([cb5b359](cb5b359)) * **deps:** update tiptap packages to v2.0.0-beta.205 ([Doist#54](https://github.com/jerrywcy/memos-typist-editor/issues/54)) ([2074402](2074402)) * **deps:** update tiptap packages to v2.0.0-beta.206 ([Doist#59](https://github.com/jerrywcy/memos-typist-editor/issues/59)) ([27e0f26](27e0f26)) * **deps:** update tiptap packages to v2.0.0-beta.207 ([Doist#63](https://github.com/jerrywcy/memos-typist-editor/issues/63)) ([da9889f](da9889f)) * **deps:** update tiptap packages to v2.0.0-beta.209 ([Doist#75](https://github.com/jerrywcy/memos-typist-editor/issues/75)) ([97a41c5](97a41c5)) * **deps:** update tiptap packages to v2.0.0-beta.215 ([Doist#129](https://github.com/jerrywcy/memos-typist-editor/issues/129)) ([af22d22](af22d22)) * **deps:** update tiptap packages to v2.0.0-beta.216 ([Doist#135](https://github.com/jerrywcy/memos-typist-editor/issues/135)) ([3d31a2e](3d31a2e)) * **deps:** update tiptap packages to v2.0.0-beta.217 ([Doist#136](https://github.com/jerrywcy/memos-typist-editor/issues/136)) ([eebba15](eebba15)) * **deps:** update tiptap packages to v2.0.0-beta.218 ([Doist#148](https://github.com/jerrywcy/memos-typist-editor/issues/148)) ([0e9e179](0e9e179)) * **deps:** update tiptap packages to v2.0.0-beta.220 ([Doist#158](https://github.com/jerrywcy/memos-typist-editor/issues/158)) ([c7fc3d8](c7fc3d8)) * **deps:** update tiptap packages to v2.0.0-rc.1 ([Doist#192](https://github.com/jerrywcy/memos-typist-editor/issues/192)) ([26d090a](26d090a)) * **deps:** update tiptap packages to v2.0.0-rc.2 ([Doist#195](https://github.com/jerrywcy/memos-typist-editor/issues/195)) ([8753f13](8753f13)) * **deps:** update tiptap packages to v2.0.1 ([Doist#201](https://github.com/jerrywcy/memos-typist-editor/issues/201)) ([e31cb2f](e31cb2f)) * **deps:** update tiptap packages to v2.0.2 ([Doist#212](https://github.com/jerrywcy/memos-typist-editor/issues/212)) ([200b339](200b339)) * **deps:** update tiptap packages to v2.0.3 ([Doist#226](https://github.com/jerrywcy/memos-typist-editor/issues/226)) ([a1953b0](a1953b0)) * **docs:** correct the render function name ([Doist#50](https://github.com/jerrywcy/memos-typist-editor/issues/50)) ([45dd681](45dd681)) * Extra paragraph node inserted above an Horizontal Rule ([Doist#313](https://github.com/jerrywcy/memos-typist-editor/issues/313)) ([3852309](3852309)) * **factories:** Allow alphanumeric IDs for suggestion nodes in `createSuggestionExtension` ([Doist#66](https://github.com/jerrywcy/memos-typist-editor/issues/66)) ([a1726a6](a1726a6)) * **html-serializer:** Disables tokenizers if marks/nodes are not found in the editor schema ([Doist#86](https://github.com/jerrywcy/memos-typist-editor/issues/86)) ([0ed4a9b](0ed4a9b)) * **html-serializer:** Don't share instances between editors ([Doist#275](https://github.com/jerrywcy/memos-typist-editor/issues/275)) ([3aba8c7](3aba8c7)) * Invalid `hasCodeMarkBefore` check in `canInsertSuggestion` utility function ([Doist#156](https://github.com/jerrywcy/memos-typist-editor/issues/156)) ([21826c5](21826c5)) * **markdown-serializer:** Override Turndown escaping behaviour with custom rules ([Doist#102](https://github.com/jerrywcy/memos-typist-editor/issues/102)) ([6950afb](6950afb)) * **paste-markdown:** Incorrect paste behaviour when HTML source is VSCode ([Doist#260](https://github.com/jerrywcy/memos-typist-editor/issues/260)) ([3326796](3326796)) * Remove unused Tippy.js peer dependency ([Doist#56](https://github.com/jerrywcy/memos-typist-editor/issues/56)) ([85f87a5](85f87a5)) * Replace usage of useEvent with useCallback ([Doist#98](https://github.com/jerrywcy/memos-typist-editor/issues/98)) ([3b175f7](3b175f7)) * **rich-text-link:** More lenient regex for input/paste rule ([Doist#72](https://github.com/jerrywcy/memos-typist-editor/issues/72)) ([98e363f](98e363f)) * Task List now only toggle by typing `[ ]` in bullet list ([ae3103b](ae3103b)) * Unit-tests now support TaskItem and TaskList ([639abf6](639abf6)) ### Reverts * Revert "ci: Add support to publish experimental releases" (Doist#279) ([dc57964](dc57964)), closes [Doist#279](https://github.com/jerrywcy/memos-typist-editor/issues/279) [Doist#278](https://github.com/jerrywcy/memos-typist-editor/issues/278)
Overview
A function created with the
useEvent
hook was being used inTypistEditor
'sonCreate
function, which was called during rendering (when initializing theeditor
useState
inuseEditor
). This caused it to throw an error when React's Strict Mode was enabled, as this type of usage makes the rendering result non-determinisitic. See reactjs/rfcs#220 (comment) for further discussion.PR Checklist