feat: 实现模块6 - TUI集成翻译 (Enter翻译/异步执行/加载状态)
This commit is contained in:
53
memory.md
53
memory.md
@@ -643,4 +643,57 @@ func (m model) renderResult() string {
|
||||
}
|
||||
return " " + resultStyle.Render(m.result) + "\n"
|
||||
}
|
||||
|
||||
### 异步命令和消息模式
|
||||
```go
|
||||
// 定义自定义消息类型
|
||||
type translateMsg struct {
|
||||
result string
|
||||
err error
|
||||
}
|
||||
|
||||
// 异步执行函数
|
||||
func (m model) doTranslate(text string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
result, err := translate(text)
|
||||
if err != nil {
|
||||
return translateMsg{err: err}
|
||||
}
|
||||
return translateMsg{result: result}
|
||||
}
|
||||
}
|
||||
|
||||
// Update中处理消息
|
||||
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
switch msg := msg.(type) {
|
||||
case translateMsg:
|
||||
if msg.err != nil {
|
||||
m.errMsg = msg.err.Error()
|
||||
} else {
|
||||
m.result = msg.result
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
```
|
||||
|
||||
### 加载状态处理
|
||||
```go
|
||||
type model struct {
|
||||
loading bool
|
||||
errMsg string
|
||||
}
|
||||
|
||||
// View中显示loading
|
||||
func (m model) View() string {
|
||||
if m.loading {
|
||||
return "正在翻译..."
|
||||
}
|
||||
if m.errMsg != "" {
|
||||
return "错误: " + m.errMsg
|
||||
}
|
||||
return m.result
|
||||
}
|
||||
```
|
||||
```
|
||||
Reference in New Issue
Block a user