@@ -441,6 +441,80 @@ Of course, you can also use any other css-in-js library or by just using simple
441
441
css to achieve almost anything you can imagine just by using the wrapper class
442
442
as your root selector.
443
443
444
+ ## Fallback UIs
445
+
446
+ Lets say you want to have a fallback UI incase the ` sketch ` ever falls out of
447
+ sync or is undefined for some reason. If this is a use case for you then you
448
+ call use the ` fallback ` prop to provide the necessary UI to show in the case
449
+ that the ` sketch ` becomes undefined. An example could be as follows:
450
+
451
+ ``` jsx
452
+ import * as React from " react" ;
453
+ import { ReactP5Wrapper } from " @p5-wrapper/react" ;
454
+
455
+ function sketchOne (p5 ) {
456
+ p5 .setup = () => p5 .createCanvas (600 , 400 , p5 .WEBGL );
457
+
458
+ p5 .draw = () => {
459
+ p5 .background (250 );
460
+ p5 .normalMaterial ();
461
+ p5 .push ();
462
+ p5 .rotateZ (p5 .frameCount * 0.01 );
463
+ p5 .rotateX (p5 .frameCount * 0.01 );
464
+ p5 .rotateY (p5 .frameCount * 0.01 );
465
+ p5 .plane (100 );
466
+ p5 .pop ();
467
+ };
468
+ }
469
+
470
+ function sketchTwo (p5 ) {
471
+ p5 .setup = () => p5 .createCanvas (600 , 400 , p5 .WEBGL );
472
+
473
+ p5 .draw = () => {
474
+ p5 .background (500 );
475
+ p5 .normalMaterial ();
476
+ p5 .push ();
477
+ p5 .rotateZ (p5 .frameCount * 0.01 );
478
+ p5 .rotateX (p5 .frameCount * 0.01 );
479
+ p5 .rotateY (p5 .frameCount * 0.01 );
480
+ p5 .plane (100 );
481
+ p5 .pop ();
482
+ };
483
+ }
484
+
485
+ export function App () {
486
+ const [sketch , setSketch ] = React .useState (undefined );
487
+ const chooseNothing = () => setSketch (undefined );
488
+ const chooseSketchOne = () => setSketch (sketchOne);
489
+ const chooseSketchTwo = () => setSketch (sketchTwo);
490
+
491
+ return (
492
+ <>
493
+ < ul>
494
+ < li>
495
+ < button onClick= {chooseNothing}> Choose nothing< / button>
496
+ < / li>
497
+ < li>
498
+ < button onClick= {chooseSketchOne}> Choose sketch 1 < / button>
499
+ < / li>
500
+ < li>
501
+ < button onClick= {chooseSketchTwo}> Choose sketch 2 < / button>
502
+ < / li>
503
+ < / ul>
504
+ < ReactP5Wrapper
505
+ fallback= {< h1> No sketch selected yet.< / h1> }
506
+ sketch= {sketch}
507
+ / >
508
+ < / >
509
+ );
510
+ }
511
+ ```
512
+
513
+ In this case, by default the fallback UI containing
514
+ ` <h1>No sketch selected yet.</h1> ` will be rendered, then if you select a
515
+ sketch, it will be rendered until you choose to once again "show nothing" which
516
+ falls back to the fallback UI.
517
+
444
518
## P5 plugins and constructors
445
519
446
520
As discussed in multiple issues such as
0 commit comments