iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Modern Web

30天學習Tauri系列 第 14

14.實作Tauri Todo -Frontend (一) 編寫Tauri Todo UI

  • 分享至 

  • xImage
  •  

今天將我們app中,裡面的Tauri Backend裡所創建的Todo功能與我們frontend的todo功能做繫結,讓我們的frontend能呼叫我們的command

首先,我們先創立Todo的類型

interface Todo {
  id: number,
  title: string,
  date: string,
  done: boolean
}

修改我們的state以及新增方法來取得我們的Todo,並且先將我們handleTaskAdd和handleTaskDelete功能註解掉

  const [todos, setTodos] = useState<Todo[]>([]);
  const [todo, setTodo] = useState<Todo>({id: -1, title: "", date: "None", done: false});

  useEffect(()=> {
    fetchAllTodo();
  }, [todos]);

  const fetchAllTodo = async () => {
    setTodos(await invoke("get_todos"));
  }

  const handleTitleChange = (e: React.FormEvent<HTMLInputElement>) =>   {
    let value = e.currentTarget.value;
    setTodo({...todo, title: value});
  }
  
  const handleTaskAdd = async () => {
    // setTodos([todo, ...todos]);
    // setTodo('');
  }

  const handleTaskDelete = async (index) => {
    // setTodos(todos.filter(e => e !== todos[index]));
    // setTodo('');
  }

修改ui裡的todo

    <div className="container">
      <h1>Welcome to Todo List</h1>
      
      <div className="row">
        <input
          id="greet-input"
          onChange={(e) => handleTitleChange(e)}
          placeholder="Enter a task..."
          value={todo.title}
        />
        <button type="button" onClick={() => handleTodoAdd()}>
          Add
        </button>
        
      </div>
      <hr />
      {todos.map((todo, index) => {
        return (
          <div className="row" key={index}>
            <div style={itemStyle}>{todo.title}</div>
            <button type="button" onClick={() => handleTodoDelete(index)}>
              Delete
            </button>
          </div>
        );
      })}
    </div>

先測試一下,能看到顯示出我們的todo了
https://ithelp.ithome.com.tw/upload/images/20220929/201089317ibtyHVpbC.png


今天簡單的展示一下如何和Tauri前後端進行交互,明天開始加入新增和刪除功能


上一篇
13.實作Tauri Todo -Backend (三) 編寫Tauri Core
下一篇
15.實作Tauri Todo -Frontend (二) 編寫Tauri Todo UI
系列文
30天學習Tauri30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言