Skip to content

Instantly share code, notes, and snippets.

View ryardley's full-sized avatar

гλ ryardley

View GitHub Profile
function RenderFunctionComponent() {
const [firstName, setFirstName] = useState("Rudi");
const [lastName, setLastName] = useState("Yardley");
return (
<Button onClick={() => setFirstName("Fred")}>Fred</Button>
);
}
let firstRender = true;
function RenderFunctionComponent() {
let initName;
if(firstRender){
[initName] = useState("Rudi");
firstRender = false;
}
const [firstName, setFirstName] = useState(initName);

Keybase proof

I hereby claim:

  • I am ryardley on github.
  • I am ryardl (https://keybase.io/ryardl) on keybase.
  • I have a public key ASBYRGZRhFPvU4E3PXOXnk1w6KeFUwQNFax6Y_jPMfHVDwo

To claim this, I am signing this object:

@ryardley
ryardley / create-rn.sh
Last active January 5, 2019 05:46
React Native the polyglot platform 1
npx -p react-native-cli react-native init CppReactNative && cd ./CppReactNative
@ryardley
ryardley / alter-app.js
Last active January 5, 2019 01:22
React Native the polyglot platform 2
// @flow
import React, { Component } from "react";
import { NativeModules, StyleSheet, Text, View } from "react-native";
type Props = {};
type State = { message: string };
const { HelloWorld } = NativeModules;
export default class App extends Component<Props, State> {
state = {
message: "loading..."
// ./ios/ReactBridge/RCTHelloWorld.h
#import <React/RCTBridgeModule.h>
@interface RCTHelloWorld : NSObject <RCTBridgeModule>
@end
@ryardley
ryardley / RCTHelloWorld.m
Last active January 1, 2019 20:30
Complete implementation bridging to C++
// ./ios/ReactBridge/RCTHelloWorld.m
#import "RCTHelloWorld.h"
#import "HWHelloWorld.h"
@implementation RCTHelloWorld{
HWHelloWorld *_cppApi;
}
- (RCTHelloWorld *)init
{
mkdir -p ios/ReactBridge
// ./ios/ReactBridge/RCTHelloWorld.m
#import "RCTHelloWorld.h"
@implementation RCTHelloWorld
RCT_EXPORT_MODULE();
RCT_REMAP_METHOD(sayHello,
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject)
// android/app/src/main/java/com/cppreactnative/helloworld/HelloWorldModule.java
package com.cppreactnative.helloworld;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class HelloWorldModule extends ReactContextBaseJavaModule {