Comments (8)
Oh haha. RTFM. It's actually pretty simple:
- (void)loadMesh:(NSString *)path {
RCT_EXPORT();
dispatch_async(dispatch_get_main_queue(), ^{
node.mesh = [REMeshCache meshNamed:path];
});
}
That works!
from react-native.
If you are bored, would be awesome to compile this into some sort of docs :)
from react-native.
If you are bored, would be awesome to compile this into some sort of docs :)
I almost filed an issue about that, actually! I was going to ask if there's a place you want us to contribute to docs. I can certainly write done a bunch of small stuff I've learned. Where would you like it, and what format?
from react-native.
We're going to have official docs before we open this repo to everyone. They'll be in the docs folder in markdown, the same way React is. If you can start writing them in markdown and in the docs folder with whatever you think is useful for people, that would be awesome!
https://github.com/facebook/react/tree/master/docs/docs
from react-native.
Looks like this is a very common pattern - native modules that run on main thread. Maybe we could do something like:
- (void)loadMesh:(NSString *)path {
RCT_EXPORT_ON_MAIN_THREAD();
node.mesh = [REMeshCache meshNamed:path];
}
@a2 / @nicklockwood - any thoughts?
from react-native.
The JS bridge is meant to be asynchronous and therefore runs off the main thread. I personally think that if something should happen on a specific thread/queue, it is the caller's responsibility. Apple's documentation often says that callbacks can happen on private threads/queues and that you should dispatch if necessary.
from react-native.
@a2 great answer, totally makes sense!
from react-native.
Whilst @a2 is quite correct, I wonder if it might make sense to change the thread that we call back to modules on to main.
We don't call module methods on the JS thread, we actually call them on the shadow thread, which is a seperate thread used by the RCTUIManager to do layout calculations.
But other than the UIManager, the vast majority of modules either don't care what thread they run on, or would prefer to run their methods on the main thread. Perhaps then, the bridge should call back to main, and the UIManager can dispatch to the shadow thread?
It would save having to dispatch_async inside every single module's methods for the sake of catering to the requirements of one specific module.
from react-native.
Related Issues (20)
- Sticky views have visual glitches while scrolling in ScrollView HOT 1
- targetSdkVersion 33 to 34 app crash HOT 7
- Error: package com.facebook.react.modules.storage does not exist import com.facebook.react.modules.storage HOT 4
- Heap snapshot throwing `RangeError: Invalid typed array length: -1` on latest chrome version HOT 8
- ☂️ Help us migrate Android tests to AssertJ HOT 23
- Accessibility issue - Android with TalkBack - accessibilityRole="link" is not available when user tries to navigate via links (TalkBack menu)
- App Crash when using ReactNativeFile in apollo upload client HOT 4
- createBundleReleaseJsAndAssets\index.android.bundle:1322:18: warning: the variable "DebuggerInternal" was not declared in function "__shouldPauseOnThrow" typeof DebuggerInternal !== 'undefined' HOT 7
- automaticallyAdjustKeyboardInsets doesn't work in the new arch HOT 2
- App Crashes - On upgrading to Android 14(SDK 34) for "react-native": "0.68.2", HOT 4
- No hot reloading when change font scale
- react-native 0.74.3 new project sync error HOT 3
- Codegen: Int32 generate double on Java HOT 2
- Issue with Top Padding in Text Component on Android (includeFontPadding : false not working🥹) HOT 5
- RTL Layout Direction Not Updating after app reload with New React Native Architecture HOT 10
- Unable to handle hardware back press in Brownfield Setup with BackHandler HOT 5
- App could not Build when trying upgrade sdk 33 to 34 HOT 4
- App could not Build when trying upgrade sdk 33 to 34 (Unexpected error during link, AAPT2 aapt2-4.2.2-7147631-linux Daemon) HOT 4
- react native android crashed in the real device when target API level is changed from 33 to 34. HOT 7
- Upgrade pretty-format to 29 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-native.