<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[waft-ui组件的学习和测试]]></title><description><![CDATA[<p dir="auto">完成waft开发环境搭建后，就到了waft开发的学习过程，首先学习waft-UI中组件的使用。在使用过程中遇到了一些问题，经过waft开发团队的帮助得到解决，但是还有部分问题需要在学习和使用过程中不断的摸索。</p>
<h3>1.  Waft-UI组件的安装</h3>
<p dir="auto">以下组件测试基于，Waft-UI组件的最新版本是0.3，waft版本0.7。在创建了新的工程后，在工程目录下安装waft-ui，命令为</p>
<p dir="auto">npm i waft-ui –save</p>
<p dir="auto">更新waft为0.7版，执行命令：</p>
<pre><code>ncu
nuc –u
npm install
</code></pre>
<p dir="auto">将会将当前工程中的组件更新到最新。</p>
<h3>2.  Button组件的学习</h3>
<p dir="auto">Waft-UI中提供了基本的Button组件，我们可以直接调用这个组件来使用。</p>
<p dir="auto"><strong>2.1 组件的调用方法</strong></p>
<p dir="auto">在index.json中增加button组件的引用，方法为：</p>
<pre><code>{
 "usingComponents": {
   "x-button": "waft-ui/assembly/button/button"
  }
}
</code></pre>
<p dir="auto"><strong>2.2 Button的显示</strong></p>
<p dir="auto">在index.axml文件中，编写显示脚本。</p>
<pre><code>&lt;view class="wrapper"&gt;
  &lt;x-nav-bar showArrow="{{true}}" title="Button"&gt;&lt;/x-nav-bar&gt;
  &lt;view style="flex: 1; padding-top: 30rpx; display: flex;flex-direction: column;"&gt;
    &lt;x-button type="primary" text="按钮"
        onTap="priclick" &gt;
    &lt;/x-button&gt;
    &lt;view class="dot"&gt;&lt;/view&gt;
    &lt;x-button type="secondary" text="按钮"
        onTap="secclick" &gt;
    &lt;/x-button&gt;
    &lt;view class="dot"&gt;&lt;/view&gt;
    &lt;view class="title"&gt;带图标&lt;/view&gt;
    &lt;view class="flex"&gt;
      &lt;x-button
        text="按钮" 
        iconURL="http://172.17.64.61:8001/ico/bulb-24x24-23415.png"
        onTap="btnclick" &gt;
      &lt;view class="dot"&gt;&lt;/view&gt;
    &lt;/view&gt;
  &lt;/view&gt;
  &lt;view class="title"&gt;自定义颜色&lt;/view&gt;
  &lt;view class="flex"&gt;
      &lt;x-button text="按钮" bgColor="#ff976a" borderColor="#ff976a" textColor="#ffffff"&gt;&lt;/x-button&gt;&lt;view class="dot"&gt;&lt;/view&gt;
  &lt;/view&gt;
&lt;/view&gt;
</code></pre>
<p dir="auto">实际的显示效果如下图所示：</p>
<p dir="auto"><img src="/assets/uploads/files/1654136770287-c5dbb15085a23b87efaa49e2dcfe9ac1.jpg" alt="c5dbb15085a23b87efaa49e2dcfe9ac1.jpg" class=" img-responsive img-markdown" width="463" height="477" /></p>
<p dir="auto"><strong>2.3 Button的事件响应</strong></p>
<p dir="auto">在index.ts中编写Button的事件响应函数</p>
<pre><code>import { FuncPage, MessageEvent, Target, history, Event } from 'waft';
import { JSON, JSONObject } from "waft-json";
 
export function Main(page: FuncPage): void {
  // page.addEventListener("btnclick", (e: MessageEvent): void =&gt; {
  //  console.log("this is button test!");
  // });
  page.addEventListener("btnclick", (e, target): void =&gt; {
    console.log("this is button test!");
  });
  page.addEventListener("priclick", (e, target): void =&gt; {
    console.log("this is primary button test!");
  });
  page.addEventListener("secclick", (e, target): void =&gt; {
    console.log("this is secondary button test!");
  });
 
  page.onload = function (data: JSONObject, target?: Target | null) {
    console.log('--&gt; onLoad tigger with launchData =  ' + data.toString());
  };
   page.onmessage = function (event: MessageEvent) {
    console.log('--&gt; onMessage args =  ' + event.toString());
  }
}
</code></pre>
<p dir="auto">事件的响应结果展示如下图所示，可见，当按键被按下时，按键的响应函数被执行了，在终端打印了我们的输出信息。</p>
<p dir="auto"><img src="/assets/uploads/files/1654136792397-9c94f0acca1f1ce9d4525876b12238ba.jpg" alt="9c94f0acca1f1ce9d4525876b12238ba.jpg" class=" img-responsive img-markdown" width="711" height="703" /></p>
<h3>3.  Toast组件的学习</h3>
<p dir="auto">Waft-UI中提供了Toast轻提示组件，我们可以直接调用这个组件显示提示信息。</p>
<p dir="auto"><strong>3.1 组件的调用方法</strong><br />
在index.json中增加Toast组件的引用，方法为：</p>
<pre><code>{
 "usingComponents": {
    "x-toast": "waft-ui/assembly/toast/toast"
  }
}
</code></pre>
<p dir="auto"><strong>3.2 组件使用</strong></p>
<p dir="auto">组件的显示是通过程序调用完成的。</p>
<pre><code>import { Page, Props } from "waft";
import { JSON, JSONObject } from "waft-json";
import { Toast, ToastOptions } from "waft-ui";
 
export class ComponentTest extends Page {
  constructor(props: Props) {
    super(props);
    this.addEventListener("clickToast1Btn", (e, target): void =&gt; {
      // 未测试多个toast同时调用的问题
      let toastOptions = new ToastOptions();
      toastOptions.message = "测试Toast1";
      toastOptions.type = "fail";
      toastOptions.iconURL = "http://172.17.64.61:8001/ico/O1CN01cSL5BS1d7bmgm1pxt_!!6000000003689-2-tps-200-200.png"
      toastOptions.position = "middle";
      Toast.show(toastOptions);
    });
   this.addEventListener("clickToast2Btn", (e, target): void =&gt; {
      let toastOptions = new ToastOptions();
      toastOptions.message = "测试Toast2";
      toastOptions.type = "success";
      toastOptions.iconURL = "http://172.17.64.61:8001/ico/O1CN01evbrT81s2JRO3tkra_!!6000000005708-2-tps-200-200.png"
      toastOptions.duration = 5000;
      toastOptions.position = "middle";
      Toast.show(toastOptions);
    });
   this.addEventListener("clickOverlayBtn", (e, target): void =&gt; {
      (target as ComponentTest).setState(
       JSON.parseObject(`{"showOverlay":true}`)
      );
      console.log("====打开遮罩");
 
    });
    this.addEventListener("clickOverlay", (e, target): void =&gt; {
      (target as ComponentTest).setState(
       JSON.parseObject(`{"showOverlay":false}`)
      );
      console.log("====关闭遮罩");
    });
   this.addEventListener("clickDialogBtn", (e, target): void =&gt; {
      console.log("dadsada");
 
      (target as ComponentTest).setState(
       JSON.parseObject(`{"showDialog":true}`)
      );
    });
   this.addEventListener("clickConfirm", (e, target): void =&gt; {
      console.log("****关闭弹窗****");
      (target as ComponentTest).setState(
       JSON.parseObject(`{"showDialog":false}`)
      );
    });
   this.addEventListener("clickCancel", (e, target): void =&gt; {
      console.log("****关闭弹窗****");
      (target as ComponentTest).setState(
       JSON.parseObject(`{"showDialog":false}`)
      );
    });
  }
}
</code></pre>
<p dir="auto">实际显示效果如下图所示：</p>
<p dir="auto"><img src="/assets/uploads/files/1654136833946-4f79db6ecb3d041fd6820071b44cb6b4.jpg" alt="4f79db6ecb3d041fd6820071b44cb6b4.jpg" class=" img-responsive img-markdown" width="463" height="450" /></p>
<h3>4.  Image组件的学习</h3>
<p dir="auto">Waft-UI中提供了Image显示组件，我们可以直接调用这个组件显示图片。</p>
<p dir="auto"><strong>4.1 组件的调用方法</strong></p>
<p dir="auto">在index.axml中增加image组件的调用</p>
<pre><code>&lt;view class="wrapper"&gt;
 &lt;x-nav-bar showArrow="{{true}}" title="测试图片"&gt;&lt;/x-nav-bar&gt;
 &lt;view class="content"&gt;
   &lt;x-image full="{{ true }}" width="320rpx" height="240rpx" src="http://172.17.64.61:8001/ico/O1CN01dudMzQ1eY0BV29999_!!6000000003882-2-tps-1920-1080.png"&gt;&lt;/x-image&gt;
 &lt;/view&gt;
&lt;/view&gt;
</code></pre>
<p dir="auto">其中width和height根据屏幕尺寸适当调整，图片需要指明获取来源。</p>
<pre><code>  在index.json中增加image组件的引用，方法为：
</code></pre>
<pre><code>{
 "usingComponents": {
    "x-image": "waft-ui/assembly/image/image"
  }
}
</code></pre>
<p dir="auto">4.2实际显示效果如下图所示</p>
<p dir="auto"><img src="/assets/uploads/files/1654136855586-6afc793eed1a7f38a3ad72f817d52623.jpg" alt="6afc793eed1a7f38a3ad72f817d52623.jpg" class=" img-responsive img-markdown" width="463" height="442" /></p>
<p dir="auto">显示的图片源的大小会根据设定的width和heigth自动的调整。</p>
]]></description><link>https://bbs.aw-ol.com/topic/1527/waft-ui组件的学习和测试</link><generator>RSS for Node</generator><lastBuildDate>Mon, 09 Mar 2026 05:29:42 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/1527.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Jun 2022 02:27:51 GMT</pubDate><ttl>60</ttl></channel></rss>