当前位置: 首页 > news >正文

四川建设部网站官网长宁房产网站建设

四川建设部网站官网,长宁房产网站建设,好的家装设计,信息平台怎么赚钱说明 通常情况下,React 子组件使用父组件的方法或值通过props传递,反过来,父组件如果需要子组件的方法就需要子组件将自己的方法暴露出去。以下是一个实例: User.tsx import React, { FC, useEffect, useState, useRef } from …

说明

通常情况下,React 子组件使用父组件的方法或值通过props传递,反过来,父组件如果需要子组件的方法就需要子组件将自己的方法暴露出去。以下是一个实例:

User.tsx

import React, { FC, useEffect, useState, useRef } from 'react';
import { Button, Table } from 'antd';
import UserEdit, { UserEditRef } from './UserEdit';
import { EditFilled } from '@ant-design/icons';interface User {desc?: string;name?: string;
}
const User: FC = () => {const userEditRef = useRef<UserEditRef>(null);const columns: any = [{title: '名称',dataIndex: 'name',key: 'name',},{title: '描述',dataIndex: 'desc',key: 'desc',},{title: '操作',render: (_: string, record: User) => {return (<EditFilledonClick={(e) => {userEditRef.current?.open(record);}}/>);},},];const [datasource, setDatasource] = useState<User[]>([{desc: 'I am Tom',name: 'Tom',},{desc: 'I am Marry',name: 'Marry',},]);const updateData = (data?: User) => {const datas = [data, ...datasource];setDatasource(datas);};return (<div><ButtononClick={() => {userEditRef.current.open();}}>新建</Button><Table columns={columns} dataSource={datasource} /><UserEdit ref={userEditRef} onSave={updateData} /></div>);
};export default User;

UserEdit.tsx

import { useState, useImperativeHandle, forwardRef } from 'react';
import { Form, Input, Drawer, Button } from 'antd';interface User {userId?: number;desc?: string;name?: string;
}interface PropType {onSave: Function;
}export interface UserEditRef {open: (currentUser?: User) => void;
}const UserEdit = forwardRef<UserEditRef, PropType>((props, ref) => {//propsconst { onSave } = props;// stateconst [userEditOpen, setUserEditOpen] = useState(false);const [currentFormData, setCurrentFormData] = useState<User>();// 暴露给父组件的属性,open是打开抽屉的方法useImperativeHandle(ref, () => ({open: (currentUser?: User) => {setUserEditOpen(true);setCurrentFormData(currentUser);},}));const onCancel = () => {setUserEditOpen(false);};const onFinish = (values: any) => {onSave(values);setUserEditOpen(false);};return (<Drawertitle={currentFormData ? '用户 | ' + currentFormData?.name : '用户 | 新建'}width="auto"open={userEditOpen}footer={null}onClose={onCancel}destroyOnClose><Form initialValues={currentFormData} onFinish={onFinish}><Form.Itemlabel="组名"name="name"rules={[{ required: true, message: '请输入用户名!' }]}><Input /></Form.Item><Form.Item label="描述" name="desc"><Input.TextArea /></Form.Item><Form.Item><Button type="primary" htmlType="submit">提交</Button><ButtonhtmlType="button"onClick={onCancel}style={{ marginLeft: 8 }}>取消</Button></Form.Item></Form></Drawer>);
});export default UserEdit;

效果预览

1、stackblitz预览
2、InsCode预览

http://www.yayakq.cn/news/318023/

相关文章:

  • 简洁中文网站模板七零三八零四温州论坛
  • 易语言怎么做视频网站推广的主要目的是什么
  • 杭州网站推广威海建设集团官方网站
  • 公司手机网站模板手机端开发工具
  • 买域名了怎么做网站代理网络阅卷
  • 制作网站数据库江油市建设局网站
  • 西安建设高端网站网群企业网站管理系统
  • jsp网站开发网上订餐系统网页设计怎样做一个网页
  • 做营销的网站建设有哪几个平台做网站
  • 网站移动终端建设广州建网站兴田德润团队
  • 济宁 网站建设wordpress模块咋编辑
  • 北京建设工程网站珠海网站建设珠海易推网
  • 有网页源码怎么做网站做课件好用的网站
  • 一流的微商城网站建设东台网站建设
  • 长沙电商网站前端开发培训机构时间安排
  • 教做面点的网站网站建设简述
  • 代运营网站建设网站的建设好处
  • linux wordpress 建站教程赣州注册公司
  • 成都双语网站开发wordpress回复评论邮件中没有连接
  • 如何建设与维护网站企业建设网站网站建设公司
  • 北京网站制作报价韩国最牛的设计网站
  • 支持wap网站的系统海南网站制作
  • 企业网站前端模板下载江苏城乡建设
  • Wordpress模板服务重庆seo网站哪家好
  • 网站优化标题怎么做广告传媒公司排名
  • 画册设计网站元谋县建设局网站
  • 西安高端网站建设广东建设公司网站
  • 网站上面关于我们要怎么填写太原网络推广公司
  • 网站模板怎么修改学习网站开发
  • 网站开发的后台开发工具网店运营实训报告