Skip to content
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

feat(useGetState): get state synchronously #2268

Closed
wants to merge 3 commits into from

Conversation

liuyib
Copy link
Collaborator

@liuyib liuyib commented Jul 27, 2023

[中文版模板 / Chinese template]

🤔 This is a ...

  • New feature
  • Bug fix
  • Site / documentation update
  • Demo update
  • TypeScript definition update
  • Bundle size optimization
  • Performance optimization
  • Enhancement feature
  • Internationalization
  • Refactoring
  • Code style optimization
  • Test Case
  • Branch merge
  • Other (about what?)

🔗 Related issue link

resolve: #2266

💡 Background and solution

📝 Changelog

Language Changelog
🇺🇸 English feat(useGetState): get state synchronously
🇨🇳 Chinese feat(useGetState): 支持同步获取状态

☑️ Self Check before Merge

⚠️ Please check all items below before review. ⚠️

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • TypeScript definition is updated/provided or not needed
  • Changelog is provided or not needed

@liuyib
Copy link
Collaborator Author

liuyib commented Jul 27, 2023

@li-jia-nan @hchlq @miracles1919 @crazylxr pls review

const setState = useCallback<SetStateAction<S | undefined>>((stateOrAction) => {
const newState = isFunction(stateOrAction) ? stateOrAction(stateRef.current) : stateOrAction;

stateRef.current = newState;
Copy link
Collaborator

@hchlq hchlq Aug 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

同步后,要补个单测吗

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以,我补下

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

程哥,看下这个讨论:#2266 (comment), 这个 PR 的改动, 之前就有人提过 #1306 (comment), 不知道现在这个改动算不算破坏性更改呢?之前是没法通过 getState 同步获取到最新状态的, 应该不会有人还用它来获取旧状态吧 #2266 (comment)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

有可能的,刚才有想到过,不过一般使用的人都是在 render 过程中的,像在 set 之后重新获取旧状态的比较少。

不过咱们还是保险起见,放到 v4 的规划是不是更好呢

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

有可能的,刚才有想到过,不过一般使用的人都是在 render 过程中的,像在 set 之后重新获取旧状态的比较少。

不过咱们还是保险起见,放到 v4 的规划是不是更好呢

好的呢,那就放在 v4 做吧~

@liuyib
Copy link
Collaborator Author

liuyib commented Nov 6, 2023

建议新增 hook,以免引入 breaking changes,新 hook:#2348

@liuyib liuyib closed this Nov 6, 2023
@liuyib liuyib deleted the fix_useGetState_sync_state branch March 29, 2024 03:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

useGetState 中的 getState 在同步的时候获取不到最新的数据
2 participants