Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
教程·React8 分鐘閱讀·Updated 2026 年 10 月·ExodeUI 團隊

從 React 狀態控制 ExodeUI 狀態機輸入

使用 exodeui 套件在 React 中播放 ExodeUI 檔案的實用指南:從 React 狀態設定布林值、數位和觸發器輸入,以及處理事件。

直接總結與定義

核心要點

安裝 exodeui 包,使用 <ExodeUICanvas> 渲染文件,並透過將 setEngine 傳遞給 onReady 來使用 useExodeUI 掛鉤獲取引擎。然後從 React 效果和處理程序呼叫 setInputBool、setInputNumber 或 fireTrigger 來驅動狀態機,並使用 onTrigger 監聽事件。你的 React 狀態仍然是事實的來源;該文件擁有該動議。

模型:你的程式碼擁有數據,檔案擁有運動

ExodeUI 檔案包含層、狀態、轉換以及在它們之間切換的輸入。您的 React 元件會根據其自身的狀態決定這些輸入何時會變更。這種分割使動畫程式碼遠離組件,並讓設計人員無需接觸 React 即可更改運動。

React 狀態將輸入輸入到 ExodeUICanvas 的示意圖,該畫布播放 .exode 檔案並透過 onTrigger 將事件傳回 React
React狀態驅動輸入;畫布播放檔案並傳回事件。

設定

使用 npm install exodeui 安裝 React 運行時。如果您使用 Vite,請將 exodeui/vite-plugin 中的 exodePlugin() 新增至您的 Vite 設定中,以便可以直接匯入 .exode 檔案;否則使用 src 屬性將 URL 傳遞給檔案。

  • ExodeUICanvas 道具:src(URL)或畫板(匯入的資料)、fit、alignment、autoPlay、onReady、onTrigger、onInputUpdate。
  • useExodeUI 回傳 setEngine 加上 setInputBool、setInputNumber、setInputText、setInputNumberArray、setInputStringArray、fireTrigger 和 getInputValue。
  • 輸入名稱必須與檔案中定義的名稱相符。

布林值、數字和觸發器

使用布林值表示保持開啟的狀態,例如「正在載入」。使用數字表示連續值,例如從 0 到 100 的進度。使用觸發器表示一次性時刻,例如 Success,它觸發一次並重置。在 React 中,根據狀態設定布林值和數字,並在事件發生的處理程序中觸發觸發器。

事件返回React

動畫還可以告訴您的程式碼發生了某些事情,例如按下了檔案內的按鈕或成功動畫完成。使用 onTrigger 處理這些,它接收觸發器名稱,並將實際工作(例如 API 呼叫)保留在 React 程式碼中。

測試和可訪問性

由於運動是由輸入驅動的,因此您可以透過檢查為每個狀態設定了哪些輸入來測試 React 側。在 DOM 中保留真實的按鈕和標籤,或使用 ExodeSEO 元件,它可以為螢幕閱讀器產生視覺上隱藏的 HTML 層。如果您的檔案定義了一個簡化運動布林值,則從使用者的系統設定傳遞一個簡化運動布林值。

生產實施片段

互動組件實現
import { useEffect } from 'react';
import { ExodeUICanvas, useExodeUI } from 'exodeui';
import saveButton from './save-button.exode'; // needs exodePlugin() from 'exodeui/vite-plugin'

export function SaveButton({ saving, progress, justSaved, onSave }) {
  const { setEngine, setInputBool, setInputNumber, fireTrigger } = useExodeUI();

  // Boolean: a state that stays on while saving
  useEffect(() => { setInputBool('Loading', saving); }, [saving, setInputBool]);

  // Number: continuous progress, 0 to 100
  useEffect(() => { setInputNumber('Progress', progress); }, [progress, setInputNumber]);

  // Trigger: a one-off moment
  useEffect(() => { if (justSaved) fireTrigger('Success'); }, [justSaved, fireTrigger]);

  return (
    <div style={{ width: 240, height: 64 }}>
      <ExodeUICanvas
        artboard={saveButton}
        onReady={setEngine}
        onTrigger={(name) => { if (name === 'Pressed') onSave(); }}
      />
    </div>
  );
}

要記住的關鍵 Principle

  • 使用 ExodeUICanvas 進行渲染,並將 setEngine 從 useExodeUI 傳遞到 onReady
  • 布林值表示持續狀態,數字表示連續值,觸發器表示時刻
  • 設定來自 React 效果和處理程序的輸入;React 狀態仍然是真相來源
  • 使用 onTrigger 處理文件中的事件
  • 將應用程式邏輯保留在 React 中,將動作保留在檔案中

常見問題解答

來源

  1. exodeui (React runtime) — npm

相關指南和範例

用真實的文件試試

開啟 ExodeUI 範例,查看其輸入,然後將其放入您的 React 應用程式中。

打開範例
免費試用