[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)

这篇具有很好参考价值的文章主要介绍了[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总有以下的需求:

  1. 等待用户确认,就是有【确定】和【取消】按钮,有个标题和内容的弹框(比如:您确定要删除吗?)
  2. 就是告知一下,就是上面的【取消】按钮不显示(比如:保存成功!)
  3. 莫有按钮,几秒钟后自己消失,就是所谓的toast(比如:已完成)
  4. 莫有按钮,需要发送命令才能消息(比如:数据加载中)

一开始犯了经验主义错误,还想着要调用js啥的,有点头大;后来醒悟过来的,所谓显示与否,不就加一个bool的参数,然后设置true或者false吗?so easy,so方便!

一、组件(WXDialog.razor)

@if (IsShowConfirm)
{
    <div class="js_dialog" style="opacity: 1;">
        <div class="weui-mask"></div>
        <div class="weui-dialog">
            <div class="weui-dialog__hd"><strong class="weui-dialog__title">@Title</strong></div>
            <div class="weui-dialog__bd">@Body</div>
            <div class="weui-dialog__ft">
                @if (IsShowBtnCancel)
                {
                    <a @onclick="()=>OnClick(false)" href="javascript:;" class="weui-dialog__btn weui-dialog__btn_default">取消</a>
                }
                <a @onclick="()=>OnClick(true)" href="javascript:;" class="weui-dialog__btn weui-dialog__btn_primary">确定</a>
            </div>
        </div>
    </div>
}
@if (IsShowToast)
{
    <div style="opacity: 1;">
        <div class="weui-mask_transparent"></div>
        <div class="weui-toast">
            <i class="weui-icon-success-no-circle weui-icon_toast"></i>
            <p class="weui-toast__content">@Title</p>
        </div>
    </div>

}
@if (IsShowLoading)
{
    <div style="opacity: 1;">
        <div class="weui-mask_transparent"></div>
        <div class="weui-toast">
            <i class="weui-loading weui-icon_toast"></i>
            <p class="weui-toast__content">@Title</p>
        </div>
    </div>

}


@code {
    private string? Title;
    private string? Body;
    private bool IsShowConfirm;
    private bool IsShowToast;
    private bool IsShowLoading;
    private bool IsShowBtnCancel;
    private TaskCompletionSource<bool> TaskClick = default!;

    public Task<bool> ConfirmAsync(string body="您确定要删除吗?", string title = "忆客科技")
    {
        TaskClick = new TaskCompletionSource<bool>();
        IsShowConfirm = true;
        IsShowBtnCancel = true;
        Title = title;
        Body = body;
        StateHasChanged();
        return TaskClick.Task;
    }

    public Task<bool> MessageAsync(string body="保存成功!", string title = "忆客科技")
    {
        TaskClick = new TaskCompletionSource<bool>();
        IsShowConfirm = true;
        IsShowBtnCancel = false;
        Title = title;
        Body = body;
        StateHasChanged();
        return TaskClick.Task;
    }
    public void Toast(string title = "已完成", int secondsDelay = 3)
    {
        IsShowToast = true;
        Title = title;
        StateHasChanged();
        Task.Run(async () =>
        {
            await Task.Delay(secondsDelay * 1000);
            IsShowToast = false;
            StateHasChanged();
        });
    }
    public void Loading(string title = "数据加载中")
    {
        IsShowLoading = true;
        Title = title;
        StateHasChanged();
    }
    public void HideLoading()
    {
        IsShowLoading = false;
        StateHasChanged();
    }
    private void OnClick(bool result)
    {
        IsShowConfirm = false;
        TaskClick.SetResult(result);
    }
}

二、测试(Test.razor)

@page "/test"

<h3>测试Dialg</h3>
<WXDialog @ref="MessageBox" />
<a href="javascript:;" @onclick="OnClickAsync">测试一下</a>
@code {
    private WXDialog MessageBox = default!;

    private async Task OnClickAsync()
    {
        var ret = await MessageBox!.ConfirmAsync();
        await MessageBox.MessageAsync();
        MessageBox.Toast();
        MessageBox.Loading();
        await Task.Delay(2000);
        MessageBox.HideLoading();

    }
}

三、效果

[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)
[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)
[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)
[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)

最后
总要有最后的,最后感觉调用不是太方便,要写两行,折腾过级联参数,变成一行。不知道有没有象静态方法一样的调用方式?知道的吱一声。文章来源地址https://www.toymoban.com/news/detail-825478.html

到了这里,关于[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序(原生)封装弹框组件

    小程序封装原生弹框组件(一个弹框,点击确定关闭弹框,有需要的直接复制哦) 上面是组件的内容,下面是引用方法 首先第一步在app.json或者单文件json文件引入 我用的比较多就在app.json引入的 下面是文件使用方法: 只需要子啊data中控制这两个属性就可以了,喜欢的点个赞

    2024年02月11日
    浏览(37)
  • C# Blazor 学习笔记(5):blazor文件夹组件引入

    为了更好的组件化管理整个文件,我选择使用分文件夹对项目组件进行分类。 Shared:Layout布局空间放置地方,由于默认创建,动也不好动,我就不动这个名称了,原本想改成Layout的 Pages:业务页面 Components:自定义组件文件 我创建了B_Col和B_Row两个组件。因为我怕我的命名和

    2024年02月14日
    浏览(31)
  • Element-UI源码学习——弹框组件

    首先,分析一下Element-UI的对话框,点击,会弹出一个对话框。对话框由具体的弹框内容、关闭或确认按钮、外围的遮罩层组成。首先,先看下elmentui的用法: el-dialog组件里面可进行配置 效果: 1、dom实现: 外面的div实现遮罩层,里面的div是具体的内容 css: 2、弹框类的组件

    2024年02月12日
    浏览(32)
  • 【Blazor之关于组件库Ant Design of Blazor组件样式的修改】

    例如:我们在使用Blazor框架时为了节省时间提升效率会使用到Ant Design of Blazor组件库。在使用过程中我们会根据需求去修改样式,但是由于组件库里面的样式基本上都是封装好的,要想达到自己所需的效果,这时候就需要我们去修改样式。本文就介绍一下我在使用Ant Design of

    2024年02月14日
    浏览(29)
  • 开源Blazor UI组件库精选:让你的Blazor项目焕然一新!

    今天给大家推荐一些开源、美观的Blazor UI组件库,这些优秀的开源框架和项目不仅能够帮助开发者们提高开发效率,还能够为他们的项目带来更加丰富的用户体验。 注:排名不分先后,都是十分优秀的开源框架和项目 Ant Design Blazor 是一个基于 Blazor 的前端 UI 组件库,它是

    2024年02月15日
    浏览(26)
  • Blazor 简单组件(0):简单介绍

    Blazor 这个技术还是比较新,相关的UI组件还在完善,我这里提供一下我个人的组件开发。 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 C#小轮子:Visual Studio自动编译Sass文件 C# Blazor 学习笔记(12):css样式设置

    2024年02月13日
    浏览(36)
  • uniapp - [微信小程序平台] 实现输入支付密码键盘弹框,uniapp小程序端底部弹起密码输入键盘组件效果,类似电商平台支付密码、弹出支付密码输入框、交易密码(详细示例源码,一键复制开箱即用!)

    在uniapp微信小程序端平台,详细实现底部弹出输入支付密码框组件,自定义密码输入框键盘功能(密码自动带星号、黑点保护隐私,自定义数字键盘),类似电商在付款时输入支付密码的组件。 直接复制组件源码,改下样式就能用了。 复制运行即可查看效果。

    2024年02月03日
    浏览(47)
  • 值得推荐的Blazor UI组件库

    经常看到有小伙伴在DotNetGuide技术社区交流群里问有什么好用的Blazor UI组件库推荐的,本文将分享一些开源、实用、美观的Blazor UI组件库,提供给广大C#/.NET开发者们学习和使用( 注意:排名不分先后,都是十分优秀的开源框架和项目 💖 )。这些框架都已收录到C#/.NET/.NET C

    2024年02月07日
    浏览(64)
  • Blazor第三方组件库推荐:BootstrapBlazor UI

    Blazor是C#全栈追求极致开发速度的一个前后端不分离的框架,上限是在Winform,WPF,MAUI等宿主环境上面运行的全平台引用。和Electron一样,解决方案都是套壳浏览器。 为了追求极致的开发速度,Blazor急需Blazor版本的Element UI。但是我发现国内竟然有微软技术爱好者开发了这个UI框架

    2024年02月14日
    浏览(44)
  • React组件间数据传递(弹框和高阶组件(HOC)特性实现)

    在现代前端开发中,React 已经成为了最受欢迎的 JavaScript 库之一。而在复杂的应用中,不同组件之间的数据传递问题显得尤为关键。在本文中,我们将探讨一种高效的方法,即如何利用弹框和高阶组件特性来实现 React 组件间的数据传递。我们将通过一个具体的业务场景来深入

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包