useTransition
- item 0
- item 1
- item 2
- item 3
- item 4
- item 5
- item 6
- item 7
- item 8
- item 9
- item 10
- item 11
- item 12
- item 13
- item 14
- item 15
- item 16
- item 17
- item 18
- item 19
- item 20
- item 21
- item 22
- item 23
- item 24
- item 25
- item 26
- item 27
- item 28
- item 29
- item 30
- item 31
- item 32
- item 33
- item 34
- item 35
- item 36
- item 37
- item 38
- item 39
- item 40
- item 41
- item 42
- item 43
- item 44
- item 45
- item 46
- item 47
- item 48
- item 49
- item 50
- item 51
- item 52
- item 53
- item 54
- item 55
- item 56
- item 57
- item 58
- item 59
- item 60
- item 61
- item 62
- item 63
- item 64
- item 65
- item 66
- item 67
- item 68
- item 69
- item 70
- item 71
- item 72
- item 73
- item 74
- item 75
- item 76
- item 77
- item 78
- item 79
- item 80
- item 81
- item 82
- item 83
- item 84
- item 85
- item 86
- item 87
- item 88
- item 89
- item 90
- item 91
- item 92
- item 93
- item 94
- item 95
- item 96
- item 97
- item 98
- item 99
- item 100
- item 101
- item 102
- item 103
- item 104
- item 105
- item 106
- item 107
- item 108
- item 109
- item 110
- item 111
- item 112
- item 113
- item 114
- item 115
- item 116
- item 117
- item 118
- item 119
- item 120
- item 121
- item 122
- item 123
- item 124
- item 125
- item 126
- item 127
- item 128
- item 129
- item 130
- item 131
- item 132
- item 133
- item 134
- item 135
- item 136
- item 137
- item 138
- item 139
- item 140
- item 141
- item 142
- item 143
- item 144
- item 145
- item 146
- item 147
- item 148
- item 149
- item 150
- item 151
- item 152
- item 153
- item 154
- item 155
- item 156
- item 157
- item 158
- item 159
- item 160
- item 161
- item 162
- item 163
- item 164
- item 165
- item 166
- item 167
- item 168
- item 169
- item 170
- item 171
- item 172
- item 173
- item 174
- item 175
- item 176
- item 177
- item 178
- item 179
- item 180
- item 181
- item 182
- item 183
- item 184
- item 185
- item 186
- item 187
- item 188
- item 189
- item 190
- item 191
- item 192
- item 193
- item 194
- item 195
- item 196
- item 197
- item 198
- item 199
- item 200
- item 201
- item 202
- item 203
- item 204
- item 205
- item 206
- item 207
- item 208
- item 209
- item 210
- item 211
- item 212
- item 213
- item 214
- item 215
- item 216
- item 217
- item 218
- item 219
- item 220
- item 221
- item 222
- item 223
- item 224
- item 225
- item 226
- item 227
- item 228
- item 229
- item 230
- item 231
- item 232
- item 233
- item 234
- item 235
- item 236
- item 237
- item 238
- item 239
- item 240
- item 241
- item 242
- item 243
- item 244
- item 245
- item 246
- item 247
- item 248
- item 249
- item 250
- item 251
- item 252
- item 253
- item 254
- item 255
- item 256
- item 257
- item 258
- item 259
- item 260
- item 261
- item 262
- item 263
- item 264
- item 265
- item 266
- item 267
- item 268
- item 269
- item 270
- item 271
- item 272
- item 273
- item 274
- item 275
- item 276
- item 277
- item 278
- item 279
- item 280
- item 281
- item 282
- item 283
- item 284
- item 285
- item 286
- item 287
- item 288
- item 289
- item 290
- item 291
- item 292
- item 293
- item 294
- item 295
- item 296
- item 297
- item 298
- item 299
- item 300
- item 301
- item 302
- item 303
- item 304
- item 305
- item 306
- item 307
- item 308
- item 309
- item 310
- item 311
- item 312
- item 313
- item 314
- item 315
- item 316
- item 317
- item 318
- item 319
- item 320
- item 321
- item 322
- item 323
- item 324
- item 325
- item 326
- item 327
- item 328
- item 329
- item 330
- item 331
- item 332
- item 333
- item 334
- item 335
- item 336
- item 337
- item 338
- item 339
- item 340
- item 341
- item 342
- item 343
- item 344
- item 345
- item 346
- item 347
- item 348
- item 349
- item 350
- item 351
- item 352
- item 353
- item 354
- item 355
- item 356
- item 357
- item 358
- item 359
- item 360
- item 361
- item 362
- item 363
- item 364
- item 365
- item 366
- item 367
- item 368
- item 369
- item 370
- item 371
- item 372
- item 373
- item 374
- item 375
- item 376
- item 377
- item 378
- item 379
- item 380
- item 381
- item 382
- item 383
- item 384
- item 385
- item 386
- item 387
- item 388
- item 389
- item 390
- item 391
- item 392
- item 393
- item 394
- item 395
- item 396
- item 397
- item 398
- item 399
- item 400
- item 401
- item 402
- item 403
- item 404
- item 405
- item 406
- item 407
- item 408
- item 409
- item 410
- item 411
- item 412
- item 413
- item 414
- item 415
- item 416
- item 417
- item 418
- item 419
- item 420
- item 421
- item 422
- item 423
- item 424
- item 425
- item 426
- item 427
- item 428
- item 429
- item 430
- item 431
- item 432
- item 433
- item 434
- item 435
- item 436
- item 437
- item 438
- item 439
- item 440
- item 441
- item 442
- item 443
- item 444
- item 445
- item 446
- item 447
- item 448
- item 449
- item 450
- item 451
- item 452
- item 453
- item 454
- item 455
- item 456
- item 457
- item 458
- item 459
- item 460
- item 461
- item 462
- item 463
- item 464
- item 465
- item 466
- item 467
- item 468
- item 469
- item 470
- item 471
- item 472
- item 473
- item 474
- item 475
- item 476
- item 477
- item 478
- item 479
- item 480
- item 481
- item 482
- item 483
- item 484
- item 485
- item 486
- item 487
- item 488
- item 489
- item 490
- item 491
- item 492
- item 493
- item 494
- item 495
- item 496
- item 497
- item 498
- item 499
- item 500
- item 501
- item 502
- item 503
- item 504
- item 505
- item 506
- item 507
- item 508
- item 509
- item 510
- item 511
- item 512
- item 513
- item 514
- item 515
- item 516
- item 517
- item 518
- item 519
- item 520
- item 521
- item 522
- item 523
- item 524
- item 525
- item 526
- item 527
- item 528
- item 529
- item 530
- item 531
- item 532
- item 533
- item 534
- item 535
- item 536
- item 537
- item 538
- item 539
- item 540
- item 541
- item 542
- item 543
- item 544
- item 545
- item 546
- item 547
- item 548
- item 549
- item 550
- item 551
- item 552
- item 553
- item 554
- item 555
- item 556
- item 557
- item 558
- item 559
- item 560
- item 561
- item 562
- item 563
- item 564
- item 565
- item 566
- item 567
- item 568
- item 569
- item 570
- item 571
- item 572
- item 573
- item 574
- item 575
- item 576
- item 577
- item 578
- item 579
- item 580
- item 581
- item 582
- item 583
- item 584
- item 585
- item 586
- item 587
- item 588
- item 589
- item 590
- item 591
- item 592
- item 593
- item 594
- item 595
- item 596
- item 597
- item 598
- item 599
- item 600
- item 601
- item 602
- item 603
- item 604
- item 605
- item 606
- item 607
- item 608
- item 609
- item 610
- item 611
- item 612
- item 613
- item 614
- item 615
- item 616
- item 617
- item 618
- item 619
- item 620
- item 621
- item 622
- item 623
- item 624
- item 625
- item 626
- item 627
- item 628
- item 629
- item 630
- item 631
- item 632
- item 633
- item 634
- item 635
- item 636
- item 637
- item 638
- item 639
- item 640
- item 641
- item 642
- item 643
- item 644
- item 645
- item 646
- item 647
- item 648
- item 649
- item 650
- item 651
- item 652
- item 653
- item 654
- item 655
- item 656
- item 657
- item 658
- item 659
- item 660
- item 661
- item 662
- item 663
- item 664
- item 665
- item 666
- item 667
- item 668
- item 669
- item 670
- item 671
- item 672
- item 673
- item 674
- item 675
- item 676
- item 677
- item 678
- item 679
- item 680
- item 681
- item 682
- item 683
- item 684
- item 685
- item 686
- item 687
- item 688
- item 689
- item 690
- item 691
- item 692
- item 693
- item 694
- item 695
- item 696
- item 697
- item 698
- item 699
- item 700
- item 701
- item 702
- item 703
- item 704
- item 705
- item 706
- item 707
- item 708
- item 709
- item 710
- item 711
- item 712
- item 713
- item 714
- item 715
- item 716
- item 717
- item 718
- item 719
- item 720
- item 721
- item 722
- item 723
- item 724
- item 725
- item 726
- item 727
- item 728
- item 729
- item 730
- item 731
- item 732
- item 733
- item 734
- item 735
- item 736
- item 737
- item 738
- item 739
- item 740
- item 741
- item 742
- item 743
- item 744
- item 745
- item 746
- item 747
- item 748
- item 749
- item 750
- item 751
- item 752
- item 753
- item 754
- item 755
- item 756
- item 757
- item 758
- item 759
- item 760
- item 761
- item 762
- item 763
- item 764
- item 765
- item 766
- item 767
- item 768
- item 769
- item 770
- item 771
- item 772
- item 773
- item 774
- item 775
- item 776
- item 777
- item 778
- item 779
- item 780
- item 781
- item 782
- item 783
- item 784
- item 785
- item 786
- item 787
- item 788
- item 789
- item 790
- item 791
- item 792
- item 793
- item 794
- item 795
- item 796
- item 797
- item 798
- item 799
- item 800
- item 801
- item 802
- item 803
- item 804
- item 805
- item 806
- item 807
- item 808
- item 809
- item 810
- item 811
- item 812
- item 813
- item 814
- item 815
- item 816
- item 817
- item 818
- item 819
- item 820
- item 821
- item 822
- item 823
- item 824
- item 825
- item 826
- item 827
- item 828
- item 829
- item 830
- item 831
- item 832
- item 833
- item 834
- item 835
- item 836
- item 837
- item 838
- item 839
- item 840
- item 841
- item 842
- item 843
- item 844
- item 845
- item 846
- item 847
- item 848
- item 849
- item 850
- item 851
- item 852
- item 853
- item 854
- item 855
- item 856
- item 857
- item 858
- item 859
- item 860
- item 861
- item 862
- item 863
- item 864
- item 865
- item 866
- item 867
- item 868
- item 869
- item 870
- item 871
- item 872
- item 873
- item 874
- item 875
- item 876
- item 877
- item 878
- item 879
- item 880
- item 881
- item 882
- item 883
- item 884
- item 885
- item 886
- item 887
- item 888
- item 889
- item 890
- item 891
- item 892
- item 893
- item 894
- item 895
- item 896
- item 897
- item 898
- item 899
- item 900
- item 901
- item 902
- item 903
- item 904
- item 905
- item 906
- item 907
- item 908
- item 909
- item 910
- item 911
- item 912
- item 913
- item 914
- item 915
- item 916
- item 917
- item 918
- item 919
- item 920
- item 921
- item 922
- item 923
- item 924
- item 925
- item 926
- item 927
- item 928
- item 929
- item 930
- item 931
- item 932
- item 933
- item 934
- item 935
- item 936
- item 937
- item 938
- item 939
- item 940
- item 941
- item 942
- item 943
- item 944
- item 945
- item 946
- item 947
- item 948
- item 949
- item 950
- item 951
- item 952
- item 953
- item 954
- item 955
- item 956
- item 957
- item 958
- item 959
- item 960
- item 961
- item 962
- item 963
- item 964
- item 965
- item 966
- item 967
- item 968
- item 969
- item 970
- item 971
- item 972
- item 973
- item 974
- item 975
- item 976
- item 977
- item 978
- item 979
- item 980
- item 981
- item 982
- item 983
- item 984
- item 985
- item 986
- item 987
- item 988
- item 989
- item 990
- item 991
- item 992
- item 993
- item 994
- item 995
- item 996
- item 997
- item 998
- item 999
説明
useTransitionを使うサンプルコード
補足
- useTransition は、パフォーマンスを向上させるために処理優先度を制御する。
- startTransition: 関数の優先度を下げる。
- isPending: startTransition が処理中の場合は true
パフォーマンスの向上のために、可能な限り useTransition の代わりに useMemo と useCallback を使用することが推奨される。
useMemo と useCallback では望ましい改善が得られない場合にのみ、useTransition を検討した方がよい。
利用するshadcn/uiコンポーネント
- input
サンプルコード
Example.tsx
'use client'; import { Input } from '@repo/ui'; import { ChangeEvent, useState, useTransition } from 'react'; const generateDummyItem = (num: number) => { return new Array(num).fill(null).map((item, index) => { return `item ${index}`; }); }; const dummyItems = generateDummyItem(1000); const Example = () => { // startTransition: down priority of functions // isPending: true when startTransition is proccesing const [isPending, startTransition] = useTransition(); const [filterVal, setFilterVal] = useState(''); const changeHandler = (e: ChangeEvent<HTMLInputElement>) => { // functions of useTransition down priority startTransition(() => { setFilterVal(e.target.value); }); }; return ( <> <div> <Input type="text" onChange={changeHandler} /> {isPending && <div>Loading...</div>} <ul className="m-4 h-96 overflow-y-auto"> {dummyItems .filter((item) => { if (filterVal === '') return true; return item.includes(filterVal); }) .map((item) => ( <li key={item}>{item}</li> ))} </ul> </div> </> ); }; export { Example };