精华内容
下载资源
问答
  • Java常用的组件

    千次阅读 2021-03-15 01:17:01
    (3) 说明:构造完之后,再使用Choice类的addItem方法加入菜单的条目。 6.列表框(Scrolling List) l (1) 语法格式:List (int n, boolean b) (2) 功能:构造一个有n个列表项的列表框,并根据b的值决定是否允许多选。...

    1.标识(Label)

    (1) 语法格式: Label(String s)

    (2) 功能: 构造一个显示字符串s的标识。

    2.按钮(Button)

    (1) 语法格式:Button (String s)

    (2) 功能:构造一个以字符串s为标识的按钮。

    3.复选框(Checkbox)

    (1)语法格式: Checkbox (String s)

    (2)功能:构造一个以字符串s为标识的复选框条目,未被选中。

    4.单选按钮(Radio Buttons)

    (1) 语法格式: CheckboxGroup( )

    (2) 功能: 构造一个条目组。

    5.选择菜单(Choice Menu)

    (1) 语法格式: Choice ( )

    (2) 功能:构造一个选择菜单。

    (3) 说明:构造完之后,再使用Choice类中的addItem方法加入菜单的条目。

    6.列表框(Scrolling List) l

    (1) 语法格式:List (int n, boolean b)

    (2) 功能:构造一个有n个列表项的列表框,并根据b的值决定是否允许多选。

    7.单行文本输入框(TextField)

    (1) 语法格式:TextField (int i)

    (2) 功能:构造一个字符串长度为i单行文本输入框

    8.多行文本输入框(TextArea)

    (1) 语法格式: TextArea (int i, int j)

    (2)功能: 构造一个多行文本输入框,行数为i,列数为j

    展开全文
  • 前言组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在vue angular react三大前端框架的大前端时代。许多人选择了vue,在 github 上的star,vue已经超过react的数量了。虽然star并不能代表...

    前言

    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。

    在vue angular react三大前端框架的大前端时代。许多人选择了vue,在 github 上的star,vue已经超过react的数量了。虽然star并不能代表vue更强,不过在发展速度上看来,vue确实很快。

    在模块化的前端时代,万物皆组件,vue学习组件是必不可少的。

    可是在大多数人熟悉了纯html、jq之后,在初次接触vue的组件时候,却是满脸蒙蔽。

    今天咱们以最简单的方式,带vue小白童鞋们,步入组件的世界~

    咱们今天讲三种组件使用方式

    基本组件

    全局组件

    构造组件

    1. 基本组件四步骤

    写好组件(废话~)

    在页面种引用组件

    在components中声明组件

    在页面上使用

    咱们以一个button子组件为例

    项目src结构:

    组件一般都放在components文件夹下:

    1.写好子组件:

    export default {

    // 传入子组件的参数写到props

    props: {

    color: {

    type: String, // 颜色参数类型

    default: "#000" // 默认黑色

    }

    }

    }

    .btn {

    width: 110px;

    height: 60px;

    border-radius: 10px;

    border: none;

    font-size: 15px;

    }

    2.3.4.父组件:

    我是插槽的值

    // 2. 在页面种引用组件

    import Button from '@/components/Button.vue'

    export default {

    name: "app",

    // 3. 在components中声明组件

    components: {

    Button

    }

    };

    效果:

    2. 全局组件五步骤

    写好组件(还是废话~)

    子组件添加install方法

    在 main.js 中引用

    使用 Vue.use 方法

    在页面上使用

    1.子组件还是那样~~:

    2. 子组件添加install方法

    Button.js :

    import ButtonComponent from './Button.vue'

    // 添加install方法 (插件方法)

    const Button = {

    install: function (Vue) {

    Vue.component("Button", ButtonComponent);

    }

    }

    // 导出Button

    export default Button

    当然 你可以处理多个全局组件:

    import ButtonComponent1 from './Button1.vue'

    import ButtonComponent2 from './Button2.vue'

    import ButtonComponent3 from './Button3.vue'

    const buttonList = [

    ButtonComponent1,

    ButtonComponent2,

    ButtonComponent3

    ];

    // 添加install方法 (插件方法)

    const Button = {

    install: function (Vue) {

    buttonList.forEach(button=>{

    // 这里 使用每个组件的 name 属性作为组件名

    Vue.component(button.name, button);

    })

    }

    }

    // 导出Button

    export default Button

    3.4. main.js

    import Vue from 'vue'

    import App from './App.vue'

    // 3

    import Button from '@/components/Button.js'

    // 4

    Vue.use(Button);

    new Vue({

    render: h => h(App),

    }).$mount('#app')

    5. 在页面上使用

    app.vue:

    我是全局按钮

    效果如下:

    2. 构造组件四步骤

    写好组件(还**是废话~)

    vue.extend构建组件

    挂载 Vue.prototype

    在js中使用

    1.写好子组件:

    {{value}}

    export default {

    data() {

    return {

    value: "我是一个弹框"

    };

    }

    };

    .Message {

    position: fixed;

    bottom: 30px;

    width: 200px;

    background-color: rgba(0, 0, 0, 0.5);

    color: #fff;

    border-radius: 10px;

    left: 50%;

    transform: translateX(-50%);

    line-height: 30px;

    text-align: center;

    font-size: 15px;

    animation: messageFade 3s 1;

    }

    /* 加个简单动画 */

    @keyframes messageFade {

    0% {

    opacity: 0;

    -webkit-transform: translate3d(-50%, 80%, 0);

    transform: translate3d(-50%, 80%, 0);

    }

    16% {

    opacity: 1;

    -webkit-transform: translate3d(-50%, 0, 0);

    transform: translate3d(-50%, 0, 0);

    }

    84% {

    opacity: 1;

    -webkit-transform: translate3d(-50%, 0, 0);

    transform: translate3d(-50%, 0, 0);

    }

    100% {

    opacity: 0;

    -webkit-transform: translate3d(-50%, 80%, 0);

    transform: translate3d(-50%, 80%, 0);

    }

    }

    2. vue.extend构建组件

    Message.js :

    import Vue from 'vue';

    import Message from './Message.vue';

    // 构造组件

    const MessageConstructor = Vue.extend(Message);

    // 设置删除组件

    const removeDom = (target) => {

    target.parentNode.removeChild(target);

    };

    // 构造组件添加关闭方法

    MessageConstructor.prototype.close = function() {

    this.visible = false;

    removeDom(this.$el);

    };

    const MessageDiv = (options) => {

    // 实例化组件

    const instance = new MessageConstructor({

    el: document.createElement('div'),

    // 组件参数,运用到组件内的data

    data: options,

    });

    // 在body添加组件

    document.body.appendChild(instance.$el);

    Vue.nextTick(() => {

    instance.timer = setTimeout(() => {

    // 定时关闭组件

    instance.close();

    }, 3000);

    });

    return instance;

    };

    export default MessageDiv;

    3. 挂载 Vue.prototype

    main.js :

    import Message from '@/components/Message.js'

    Vue.prototype.$message = Message;

    4. 使用:

    我是全局按钮

    import Button from "@/components/Button.vue";

    export default {

    name: "app",

    components: {

    Button

    },

    methods: {

    msg() {

    // 4. 使用构造组件

    this.$message({value:'我是构造组件'});

    }

    }

    };

    效果:

    以上就是三种组件的基本使用啦~~

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    展开全文
  • 一般我们在写vue组件的时候,都是写一个单文件,后通过import的方式将组件引入到当前页面import Component from './components/component'export default {...components: {Component}...}而在element-ui,像...

    一般我们在写vue组件的时候,都是写一个单文件,后通过import的方式将组件引入到当前页面中

    import Component from './components/component'

    export default {

    ...

    components: {

    Component

    }

    ...

    }

    而在element-ui中,像弹窗这种类型的组件,组件库都会提供一种函数调用创建的方式动态地渲染这个组件

    import { Message } from 'element-ui';

    Message.success(options)

    很显然,对于这种全局性非常强的组件来说,使用函数调用的方式是更加方便的,在需要的时候通过函数调用动态地创建一个vue实例,这样就免去了在template中通过v-if或者v-show的方式去提前将组件引入到页面中了。

    那下面我们来试试如何用函数的方式去创建类似弹窗的组件

    import createMessage from './message/index.js'

    // 我们通过下面的方式创建一个

    {{ test }}
    并挂载在body上

    createMessage({

    props: {

    text: '这是一个弹窗'

    }

    })

    下面是message/index.js,我们这里用单文件的方式去创建,比较直观并且较好维护

    import Vue from 'vue'

    // 弹窗组件单文件

    import Message from './message.vue'

    const createMessage = (options) => {

    // 获取body并且创建一个新的div节点

    let body = document.body,

    bindPhone = document.createElement('div')

    // 给创建的div设置id=message,并且添加到body后

    bindPhone.setAttribute('id', 'message')

    body.appendChild(bindPhone)

    // 这里我们return一个新的Vue实例并且将实例挂载到我们刚创建的DOM节点上

    return new Vue({

    render: (h) => {

    return h(

    Message,

    {

    props: {

    text: options.props.text

    }

    }

    )

    }

    }).$mount('#message')

    }

    export default createMessage

    上面render后的函数写法可查看渲染函数 & JSX — Vue.js,通过这种方式可传入props等参数到组件中

    {{ text }}

    export default {

    props: [

    'text' // 这里是我们刚才创建vue实例传入的props

    ]

    ...

    }

    这样我们就可以在body中直接动态地将我们的弹窗组件挂载上去了

    注:返回的Vue实例可以访问this中的相关属性和方法哦

    展开全文
  • ???? Parent.js import React, { Component } from 'react'; import Child from './Child'; ...class Parent extends Component { componentDidMount () { ... // 将子组件的实例存到 this.childRef , 这样整个父组件


    Class组件

    1. 自定义事件

    📄 Parent.js

    import React, { Component } from 'react';
    
    import Child from './Child';
    
    class Parent extends Component {
      componentDidMount () {
        console.log(this.childRef)
      }
      handleChildEvent = (ref) => {
      	// 将子组件的实例存到 this.childRef 中, 这样整个父组件就能拿到
        this.childRef = ref
      }
      //按钮事件处理
      handleClick = () => {
      	// 通过子组件的实例调用组组件中的方法
        this.childRef.sendMessage()
      }
      render () {
        return (
          <>
            <Child
              onChildEvent={this.handleChildEvent}
            />
            <button onClick={this.handleClick}>Trigger Child Event</button>
          </>
        );
      }
    }
    
    export default Parent;
    

    📄 Child.js

    import React, { Component } from 'react';
    
    class Child extends Component {
    	//子组件完成挂载时, 将子组件的方法 this 作为参数传到父组件的函数中
      componentDidMount () {
      	// 在子组件中调用父组件的方法,并把当前的实例传进去
        this.props.onChildEvent(this)
      }
      // 子组件的方法, 在父组件中触发
      sendMessage = () => {
        console.log('sending message')
      }
      render () {
        return ( <div>Child</div> );
      }
    }
    
    export default Child;
    

    2. 使用 React.createRef()

    📄 ParentCmp.js

    import React, { Component } from 'react';
    
    import ChildCmp from './ChildCmp';
    
    export default class ParentCmp extends Component {
      constructor(props) {
        super(props)
        // 创建Ref
        this.childRef = React.createRef()
      }
      // 按钮事件
      handleClick = () => {
      	// 直接通过 this.childRef.current 拿到子组件实例
        this.childRef.current.sendMessage()
      }
      render () {
        return (
          <>
            <ChildCmp ref={this.childRef} />
            <button onClick={this.handleClick}>Trigger Child Event</button>
          </>
        );
      }
    }
    

    而子组件就是一个普通的组件

    📄 ChildCmp.js

    import React, { Component } from 'react';
    
    export default class ChildCmp extends Component {
      sendMessage = () => {
        console.log('sending message')
      }
      render () {
        return 'Child';
      }
    }
    

    3. 使用回调Refs

    回调 Refs 是另一种设置 Ref 的方式,它能助你更精细地控制何时 refs 被设置和解除。

    不同于传递 createRef() 创建的 ref 属性,需要传递一个函数。

    访问 Ref 的时候也不需要 current

    📄 ParentCmp.js

    import React, { Component } from 'react';
    
    import ChildCmp from './ChildCmp';
    
    export default class ParentCmp extends Component {
      constructor(props) {
        super(props)
        // 创建Ref,不通过 React.createRef()
        this.childRef = null
      }
      // 设置Ref
      setChildRef = (ref) => {
        this.childRef = ref
      }
      // 按钮事件
      handleClick = () => {
        // 直接通过 this.childRef 拿到子组件实例
        this.childRef.sendMessage(`Trigger Child Event from Parent`)
      }
    
      render () {
        return (
          <>
            <ChildCmp ref={this.setChildRef} />
            <button onClick={this.handleClick}>Trigger Child Event</button>
          </>
        );
      }
    }
    

    而子组件还是一个普通的组件

    📄 ChildCmp.js

    import { Component } from 'react';
    
    export default class ChildCmp extends Component {
      sendMessage = (message) => {
        console.log('sending message:', message)
      }
      render () {
        return 'Child';
      }
    }
    

    Function组件

    默认情况下,不能在函数组件上使用 ref 属性,因为它们没有实例。所以上面的两种方式是行不通的。
    解决办法就是使用 forwardRefuseImperativeHandle

    不过在函数的内部是可以使用 useRef 钩子来获取组件内的 DOM 元素。

    📄 Parent.js

    import React, { useRef } from 'react';
    
    import Child from './Child';
    
    const Parent = () => {
      // 通过 Hooks 创建 Ref
      const childRef = useRef(null)
      const handleClick = () => {
        childRef.current.sendMessage()
      }
      return (
        <>
          <Child
            ref={childRef}
          />
          <button onClick={handleClick}>Trigger Child Event</button>
        </>
      );
    }
    export default Parent;
    

    📄 Child.js

    import React, { forwardRef, useImperativeHandle } from 'react';
    
    const Child = forwardRef((props, ref) => {
      //将子组件的方法 暴露给父组件
      useImperativeHandle(ref, () => ({
        sendMessage
      }))
      const sendMessage = () => {
        console.log('sending message')
      }
      return ( <div>Child</div> );
    })
    export default Child;
    

    注:
    上面的例子中只是简单地演示了父子组件之间的方法调用,当然实际情况中子组件中可以也会有自己的 ref 指向自己内部的 DOM 元素,不过这些原理都是一样的。


    🔔 文章都是一点一点码出来的,有错误在所难免,欢迎指正!😅

    展开全文
  • Vue 组件缓存

    千次阅读 2021-07-24 11:24:11
    看一个问题? 从首页的区块链模块切换到文章详情页面,再从文章详情页面回到首页,我们发现首页重新渲染原来的状态没有了,又回到了推荐模块。 首先,这是正常的状态,并非问题,路由在切换的时候会销毁切出去...
  • vue3 父组件调用子组件中方法

    千次阅读 2021-05-18 13:26:35
    方案一 子组件中: 定义方法,fnName() {…} 父组件中: setup() { let childRef = ref(null) return { childRef } } 调用:this.childRef.value.fnName() 方案二
  • 前提: 在小程序,子组件需要接受父组件的2个值A和B,子组件需要同时根据A和B做一些业务处理。 通常,我们可以在properties单独的针对A和B进行监听,但是我们发现,在A使用B,取不到B值,或在B使用A,取不...
  • 使用vue开发项目,有些UIvue使用install定义安装全局组件需要install和use这两个api配合才能完成,组件通过export暴露出install方法 。但如果直接将指定组件赋值到vue的prototype上,组件不需要vue.use安装直接就...
  • 1、java使用到的图形类主要在java.awt 与javax.swing包中。2、java.awt 与 javax.swing包的区别...3、在java所有的图形类都被称作组件类。组件的类别:容器组件、非容器组件 1、布局管理器:布局管理就是用于指定组...
  • vue3.0 子组件调用父组件中的方法

    千次阅读 2021-07-31 17:45:17
    在vue2,子组件调用父组件,直接使用this.$emit()即可。 但是在vue3,很显然使用this.$emit() 已经开始报错了,为什么会报错呢? 原因是:在vue3setup是在声明周期beforeCreate和created前执行,此时vue对象还...
  • 先使用import导入你要在该组件中使用的子组件import testComponent from './testComponent.vue'export default {//2.然后,在components写入子组件components: {testComponent},methods: {},}方法二:代码如下export...
  • 组件表示能够显示在屏幕上的各种图形化的...以Component为基础的一类层次如下图所示,示意图的箭头指向超类。这个示意图显示了Component的一些子类,其中有些对我们很重要。我们已经讨论了通往JFrame类的这条链,...
  • 通过<font color="#8dc63f"> ref 实现父组件调用子组件的方法,以及调用子组件相关参数。
  • 爷爷组件调用孙子组件中的函数 为什么采用这样的方式? 孙子组件中的数据,我想要发送给爷爷组件,但是没有触发事件, 一般的情况是子孙组件触发事件,然后发送事件给父辈组件,但是这里我的界面没有事件,所以暂时只能采用...
  • 最近开始在学习vue的相关知识,简单记录下学习过程的一些理解。在看到组件这块有个父子...我们看下面的例子:图1图2点击图1例子的button:"点击此处将‘大连’发射给父组件",会去调用方法select,在select我们...
  • vue8种组件传参方式

    千次阅读 2020-12-18 22:06:29
    首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就好像过年回家,坐着一屋子的陌生人,相互之间怎么称呼,这时就需要先知道自己和他们之间是什么样的关系。 vue组件中关系说明:...
  • 开发遇到一个需求:在Vue项目使用已经开发好的React组件。这里选择了使用vuera库完成需求。下面记录一下使用的步骤(在Reat项目使用Vue组件与此步骤类似)。 1. 安装vuera库 vuera库地址:...
  • 在Vue,父组件可以通过 $refs管理通过ref注册过的所有子组件,即 $refs对象下可以包含很多 $ref对象. 创建两个组件分别是父组件:aaa.vue 子组件:bbb.vue 父组件操作(aaa.vue) 在子组件上添加ref=“child...
  • 组件是在游戏对象(Game Object)的实现某些功能的集合。 无论是模型、 GUI、灯光还是摄像机,所有游戏对象本质上都是一个空对象挂载了不同类别的 组件,从而让该游戏对象拥有不同的功能。 简单说一下Unity开发的...
  • UniApp 组件内修改组件内的组件的样式,穿透组件中组件样式main.vue 这是一个页面这是 a 组件这是 b 组件 页面可以修改页面引入的组件样式 直接使用 /deep/ 例如: main页面 修改 a组件的样式 <style lang=...
  • 组件: 提交v-bind:index="index"v-for="(item,index) in lists"@delete="handelItemDelete ">{{item}}import ToDoItem from './components/TodoItem'export default {name: 'App',data (){return {todoValue: ...
  • 在子组件中用watch()监听值的改变,不同的类型的要用不同的监听方法 props: { echartStyle: { type: Object, default() { return {} }}, titleText: { type: String, default: '' }, tooltipFormatter: ...
  • React的纯组件

    2021-01-13 19:44:48
    React的纯组件 React提供了一种基于浅比较模式确定是否应该重新渲染组件的类React.PureComponent,通常只需要继承React.PureComponent就可以定义一个纯组件。React.PureComponent与React.Component很相似,两者...
  • vue 父组件中调用子组件函数的方法

    千次阅读 2020-12-22 13:25:14
    vue 父组件中调用子组件函数的方法在父组件中调用子组件的方法:1.给子组件定义一个ref属性。... 在父组件声明一个函数,并通过this.$refs.childItem.userInPar使用子组件中声明的函数。父组件:...
  • 最近项目需要,从父组件传值到子组件,子组件通过props获取父组件传过来的值 在父组件定义要传值的属性: //父组件定义要传的属性 :title="title" <...//data定义值 data(){ return{ title
  • Vue组件定制——动态查询规则生成组件

    千次阅读 多人点赞 2021-05-25 10:14:43
    是可以按照用户的自定义进行组织查询语句的一种复杂组件,大致可以实现SQL查询的where条件,下面是摘自mongodb的某一软件。 2.组件构建思路 按照规则组件的组织形式,可以把其视为一棵树,有树干和树叶,这样看起来...
  • 在对vue3.0的使用和学习,发现了很多和以前不一样的方法,这里聊一聊vue3.0给我们提供的全局的注册组件方法 官方文档:入口 目录: 具体方法介绍: 1、前提:返回一个提供应用上下文的应用实例。应用实例...
  • vue3.0父子组件传值

    2021-05-20 15:12:00
    1.父组件通过给子组件传值,子组件通过props接收,同时使用watch监听父组件传值的变化,然后动态的修改弹窗组件中visible的值 ,当子组件关闭弹窗的时候 通过emit发布通知父组件组件: <mode-type :modalopen=...
  • .myswiper { /deep/ .new-swiper { padding-top: 20rpx; } /deep/ .image-style { margin: 0 20rpx; width:710rpx; } }
  • 前端组件化开发实践总结

    千次阅读 多人点赞 2021-10-13 12:46:52
    自从 2010 年第一份工作接触了前后端半分离的开发方式之后,在后面的这些年里,对前端的组件化开发有了更全面一点的认识,组件化在我们的前端开发,对提高开发效率、代码的可维护性和可复用性有很大帮助,甚至对跟...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,350,788
精华内容 940,315
关键字:

中来组件