restate / v1.0.0

ಪದೇ ಪದೇ ಕೇಳುವ ಪ್ರಶ್ನೆಗಳು

restate ನಲ್ಲಿ ರೆಂಡರಿಂಗ್, ಉಳಿಕೆ, scope ಮತ್ತು ದೋಷಗಳ ಬಗ್ಗೆ ಅತಿ ಸಾಮಾನ್ಯ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಗಳು.

ಮೂಲಭೂತಗಳುನನಗೆ Provider ಬೇಕೇ?

ಇಲ್ಲ. ಸ್ಟೋರ್ ಮಾಡ್ಯೂಲ್ ಮಟ್ಟದ ಮೌಲ್ಯ; ಅದನ್ನು import ಮಾಡುವ ಯಾವುದೇ ಕಾಂಪೊನೆಂಟ್ ಬಳಸಬಹುದು. ಸ್ಟೇಟ್ ಒಂದು ಕಾಂಪೊನೆಂಟ್ ಇನ್‌ಸ್ಟೆನ್ಸ್‌ಗೆ ಸೇರಬೇಕಾದರೆ useRestateScope ಬಳಸಿ.

ಮೂಲಭೂತಗಳುನನ್ನ ಕಾಂಪೊನೆಂಟ್ ಪ್ರತಿ ಬದಲಾವಣೆಯಲ್ಲೂ ಯಾಕೆ ರೆಂಡರ್ ಆಗುತ್ತದೆ?

selector ಇಲ್ಲದೆ ಹುಕ್ ಕಾಲ್ ಮಾಡಿದರೆ ಸಂಪೂರ್ಣ ಮೌಲ್ಯಕ್ಕೆ ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಆಗುತ್ತದೆ. ಕಾಂಪೊನೆಂಟ್ ತೋರಿಸುವುದನ್ನು ಮಾತ್ರ ಹಿಂತಿರುಗಿಸುವ selector ಕೊಡಿ.

ಮೂಲಭೂತಗಳುನನ್ನ selector ಆಬ್ಜೆಕ್ಟ್ ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಬಾರಿ ರೆಂಡರ್ ಆಗುತ್ತದೆ.

Object.is ಪ್ರಕಾರ ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ ಎಂದಿಗೂ ಹಿಂದಿನದಕ್ಕೆ ಸಮನಲ್ಲ. ಎರಡನೇ ಆರ್ಗ್ಯುಮೆಂಟ್ ಆಗಿ shallow ಕೊಡಿ, ಅಥವಾ ಫೀಲ್ಡ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಆಯ್ಕೆಮಾಡಿ.

ಮೂಲಭೂತಗಳುಆಬ್ಜೆಕ್ಟ್ ಬದಲಾಯಿತು, ಆದರೆ ಏನೂ ನವೀಕರಣಗೊಳ್ಳಲಿಲ್ಲ.

set ಅದೇ ಆಬ್ಜೆಕ್ಟ್ ಪಡೆಯಿತು, ಹೀಗಾಗಿ restate ಯಾವುದೇ ಬದಲಾವಣೆ ಕಾಣಲಿಲ್ಲ. set ನಿಂದ ಹೊಸ ಆಬ್ಜೆಕ್ಟ್ ಅಥವಾ ಅರೇ ಹಿಂತಿರುಗಿಸಿ.

ಉಳಿಕೆಉಳಿಸಿದ ಡೇಟಾಗಾಗಿ ಎಲ್ಲಿ ಕಾಯಬೇಕು?

ಒಮ್ಮೆ, ಕ್ಲೈಂಟ್ ಪ್ರವೇಶ ಬಿಂದುವಿನಲ್ಲಿ: ಆ್ಯಪ್ ರೆಂಡರ್ ಮಾಡುವ ಮೊದಲು await restateManager.ready ನಡೆಸಿ. ನಂತರ ಕಾಂಪೊನೆಂಟ್‌ಗಳು ಉಳಿಸಿದ ಮೌಲ್ಯಗಳನ್ನು ನೇರವಾಗಿ ಓದುತ್ತವೆ. useRestateScope ನಲ್ಲಿರುವ ಸ್ಟೋರ್‌ಗಳು ತಮ್ಮ scope.manager.ready ಗಾಗಿ ಕಾಯುತ್ತವೆ.

ಉಳಿಕೆಡೇಟಾ ಸ್ಟೋರೇಜ್‌ಗೆ ಯಾವಾಗ ಬರೆಯಲಾಗುತ್ತದೆ?

ನೀವು save() ಕಾಲ್ ಮಾಡಿದಾಗ ಮಾತ್ರ, ಅಥವಾ autoSave ಆನ್ ಆಗಿದ್ದರೆ ಬದಲಾವಣೆಗಳ ನಂತರ. ಸಂಪಾದನೆ ಮೆಮೊರಿಯನ್ನು ಬದಲಿಸುತ್ತದೆ; ಉಳಿಸದ ಬದಲಾವಣೆಗಳಿವೆ ಎಂದು status().dirty ಹೇಳುತ್ತದೆ.

ಉಳಿಕೆautoSave ಅಥವಾ save()?

ಯಾವಾಗಲೂ ಉಳಿಸಬೇಕಾದ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಕರಡುಗಳಿಗೆ autoSave ಬಳಸಿ. ಬಳಕೆದಾರ ನಿರ್ಧರಿಸಿದಾಗ — ಉಳಿಸು ಬಟನ್, ಫಾರ್ಮ್ ಸಲ್ಲಿಕೆ — save() ಬಳಸಿ. autoSave ಆನ್ ಇದ್ದರೂ save() ಕಾಲ್ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ pagehide ನಲ್ಲಿ.

ಉಳಿಕೆಖಾಸಗಿ ವಿಂಡೋದಲ್ಲಿ ಅಥವಾ SSR ಸಮಯದಲ್ಲಿ ಉಳಿಕೆ ವಿಫಲವಾಗುತ್ತದೆ.

ಸ್ಟೋರೇಜ್ ಲಭ್ಯವಿಲ್ಲದಿದ್ದಾಗ ಸ್ಟೋರ್ ಮೆಮೊರಿಯಲ್ಲಿ ಕೆಲಸ ಮುಂದುವರಿಸುತ್ತದೆ, status().available false ಆಗುತ್ತದೆ, ಮತ್ತು save() STORAGE_UNAVAILABLE ನೊಂದಿಗೆ ತಿರಸ್ಕೃತವಾಗುತ್ತದೆ. ಪ್ರಾರಂಭ ಆದರೂ ಯಶಸ್ವಿಯಾಗುತ್ತದೆ.

ದೋಷಗಳುrestateManager.ready ತಿರಸ್ಕೃತವಾಯಿತು. ಈಗ ಏನು?

ದಾಖಲೆಯನ್ನು ಓದಲು, ಪರಿವರ್ತಿಸಲು ಅಥವಾ ಪರಿಶೀಲಿಸಲು ಆಗದಿದ್ದಾಗ ಅದು BULK_OPERATION_FAILED ನೊಂದಿಗೆ ತಿರಸ್ಕೃತವಾಗುತ್ತದೆ. error.failures ಪ್ರತಿ ಸ್ಟೋರ್ ಅನ್ನು ಅದರ ದೋಷದೊಂದಿಗೆ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. ದಾಖಲೆ ಸರಿಪಡಿಸಿ ಅಥವಾ ತೆರವುಗೊಳಿಸಿ, ಆ ಸ್ಟೋರ್‌ನ initialize() ಕಾಲ್ ಮಾಡಿ, ಮತ್ತು ready ಅನ್ನು ಮತ್ತೆ ಪ್ರವೇಶಿಸಿ.

ದೋಷಗಳುನನಗೆ QUEUE_FULL ಅಥವಾ STORAGE_TIMEOUT ಕಾಣುತ್ತದೆ.

ನೀವು ಸರದಿಗೆ ಸೇರಿಸುವ ಕೆಲಸಕ್ಕಿಂತ ಸ್ಟೋರೇಜ್ ನಿಧಾನವಾಗಿದೆ. ಬಿಗಿಯಾದ ಲೂಪ್‌ನಲ್ಲಿ save() ಕಾಲ್ ಮಾಡಬೇಡಿ — ಬಾಕಿ ಉಳಿಕೆ ಈಗಾಗಲೇ ಇತ್ತೀಚಿನ ಮೌಲ್ಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ — ಅಥವಾ ಕಾಯುವಿಕೆಯೊಂದಿಗೆ autoSave ಬಳಸಿ. ಅಗತ್ಯವಿದ್ದರೆ maxPendingOperations ಮತ್ತು operationTimeoutMs ಹೊಂದಿಸಿ.

ದೋಷಗಳುಅನ್‌ಮೌಂಟ್ ನಂತರ ತಡವಾಗಿ ಬಂದ ವಿನಂತಿ ಸ್ಟೋರ್‌ಗೆ ಬರೆಯುತ್ತದೆ.

ನಾಶವಾದ ಸ್ಟೋರ್‌ನ ಮೇಲಿನ set() ಮತ್ತು reset(), ಅನ್‌ಮೌಂಟ್ ನಂತರದ React ಸ್ಟೇಟ್ ನವೀಕರಣದಂತೆಯೇ, ನಿರ್ಲಕ್ಷಿಸಲ್ಪಡುತ್ತವೆ. ಸಬ್‌ಸ್ಕ್ರಿಪ್ಷನ್ STORE_DESTROYED ಎಸೆಯುತ್ತದೆ, ಮತ್ತು ಸ್ಟೋರೇಜ್ ಆದೇಶಗಳು ತಿರಸ್ಕೃತವಾಗುತ್ತವೆ.

Scope ಗಳುನನ್ನ scope ಸ್ಟೋರ್ ಹೊಸ props ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ.

factory, useState ಇನಿಶಿಯಲೈಸರ್‌ನಂತೆ ಒಮ್ಮೆ ಮಾತ್ರ ನಡೆಯುತ್ತದೆ. ಪ್ರತಿ ಹೊಸ ದಾಖಲೆಗೂ ಹೊಸ scope ಸಿಗಲು, ಪ್ರತಿ-ದಾಖಲೆ key ಯೊಂದಿಗೆ ಕಾಂಪೊನೆಂಟ್ ರೆಂಡರ್ ಮಾಡಿ.

Scope ಗಳುhydration ಹೊಂದಾಣಿಕೆ ತಪ್ಪುವುದನ್ನು ತಪ್ಪಿಸುವುದು ಹೇಗೆ?

ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಅದೇ ಸರ್ವರ್ ಡೇಟಾವನ್ನು props ಆಗಿ ಕಳುಹಿಸಿ, useRestateScope ನಲ್ಲಿ ಅದರಿಂದ ಸ್ಟೋರ್ ರಚಿಸಿ. ಆರಂಭಿಕ ಮೌಲ್ಯ ಸರ್ವರ್ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಆಗುತ್ತದೆ.

Scope ಗಳುನನ್ನ scope ಸ್ಟೋರ್ restateManager.ready ನಲ್ಲಿ ಯಾಕಿಲ್ಲ?

scope ನಲ್ಲಿರುವ ಉಳಿಸಲಾಗುವ ಸ್ಟೋರ್‌ಗಳು ಮಾಲೀಕ ಕಾಂಪೊನೆಂಟ್ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ commit ಆದಾಗ ಲೋಡ್ ಆರಂಭಿಸುತ್ತವೆ. ಆ ಕಾಂಪೊನೆಂಟ್‌ನಲ್ಲಿ ಲೋಡಿಂಗ್ ಗಡಿಯಲ್ಲಿ scope.manager.ready ಗಾಗಿ ಕಾಯಿರಿ.

ಉಳಿಕೆReact Native ನಲ್ಲಿ MMKV_UNAVAILABLE.

react-native-mmkv ಮತ್ತು ಅದರ ನೇಟಿವ್ ಅವಲಂಬನೆಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ, ನಂತರ ಆ್ಯಪ್ ಅನ್ನು ಮತ್ತೆ build ಮಾಡಿ. Expo ನಲ್ಲಿ development build ಬಳಸಿ. ಮೆಮೊರಿ ಸ್ಟೋರ್‌ಗಳು MMKV ಇಲ್ಲದೆಯೂ ಕೆಲಸ ಮಾಡುತ್ತವೆ.

ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕಿ

ಎಲ್ಲ ಮಾರ್ಗದರ್ಶಿಗಳ ಶೀರ್ಷಿಕೆ, ವಿವರಣೆ ಮತ್ತು ವಿಷಯದಲ್ಲಿ ಹುಡುಕಿ.