摘要:如何将代码放到自定义的中真实经历最近开发项目的时候,需要实现图片的预览并下载,想着也不难,自己写一个预览效果吧。
如何将jsx代码放到自定义的dom中? - Eric
真实经历
最近开发项目的时候,需要实现图片的预览并下载,想着也不难,自己写一个预览效果吧。其实预览就是一个弹窗(Modal),实现弹窗有两种方案:
1、使用es6的写法,直接将弹窗和按钮放在一起,代码大概如下:
/* Img */
class RenderImg extends Component {
state = {
showModal: false,
};
// 打开预览
openModal = ()=>{
this.setState({ showModal: true });
}
// 关闭预览
closeModal = ()=>{
this.setState({ showModal: false });
}
render(){
let {showModal} = this.state;
let {text, url} = this.props;
return (
{text}
{
showModal &&
{/*somecode....*/}
}
);
}
}
这样做的缺点是弹窗代码很多,直接和按钮放一起,不太好。
2、通过js创建dom,然后放到body的最下面,很多组件都是这么写的,代码大概如下:
/* 图片类型 */
class RenderImage extends Component {
//弹窗
_modal = null;
// 打开预览
openModal = ()=>{
this._modal = this.createModal();
this._modal.show();
}
// 关闭预览
closeModal = ()=>{
this._modal.hidden();
}
// 下载
download = ()=>{
downloadFile(this.props.url)
}
//创建Modal
createModal = ()=>{
let _this = this;
return {
_elem: null,
//显示
show: function(){
//此处是重点
},
//关闭
hidden: function(){
this._elem && this._elem.remove();
}
};
}
//创建元素
createElem = ()=>{
let {text, url} = this.props;
return (
{/*somecode...*/}
);
}
render(){
let {text, url} = this.props;
return {text};
}
}
因为弹窗的内容比较多,所以创建弹窗代码的时候使用了jsx,我们知道jsx代码不能直接通过appendChild放到创建的dom元素中,突然灵光一闪,想到了好久不用的React基础写法ReactDOM.render(template, dom).
正片环节(ReactDOM.render)
如果我们想在html文件中直接使用react,那我们就要用到ReactDOM.render,作用就是将jsx代码转化为HTML代码,并插入指定的dom节点中,来一段简单的代码:
总结
如果想把jsx代码转化为html代码,就可以使用ReactDOM.render,那么上面的show方法我们就可以这么写:
show: function(){
this._elem = document.createElement("div");
ReactDOM.render(_this.createElem(), this._elem);
document.body.appendChild( this._elem );
}
思考:图片在自适应大小的情况下,如何做到让图片水平和垂直居中显示?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/53211.html
摘要:如何将代码放到自定义的中真实经历最近开发项目的时候,需要实现图片的预览并下载,想着也不难,自己写一个预览效果吧。 如何将jsx代码放到自定义的dom中? - Eric 真实经历 最近开发项目的时候,需要实现图片的预览并下载,想着也不难,自己写一个预览效果吧。其实预览就是一个弹窗(Modal),实现弹窗有两种方案:1、使用es6的写法,直接将弹窗和按钮放在一起,代码大概如下: /* I...
摘要:前言是前端最受欢迎的框架之一,解读其源码的文章非常多,但是我想从另一个角度去解读从零开始实现一个,从层面实现的大部分功能,在这个过程中去探索为什么有虚拟为什么这样设计等问题。 前言 React是前端最受欢迎的框架之一,解读其源码的文章非常多,但是我想从另一个角度去解读React:从零开始实现一个React,从API层面实现React的大部分功能,在这个过程中去探索为什么有虚拟DOM、d...
摘要:小明小明儿子,可以看到组件显示了父组件的。小明受控组件和非受控组件受控组件和非受控组件这些都是指的表单组件,当一个表单的值是通过改变的而不是通过是受控组件,否则就是非受控组件。 react众所周知的前端3大主流框架之一,由于出色的性能,完善的周边设施风头一时无两。本文就带大家一起掌握react。 jsx语法 前端MVVM主流框架都有一套自己的模板处理方法,react则使用它独特的jsx...
阅读 3950·2023-04-26 00:56
阅读 2953·2021-09-30 10:01
阅读 1220·2021-09-22 15:30
阅读 4255·2021-09-07 10:21
阅读 1852·2021-09-02 15:40
阅读 3098·2021-08-30 09:47
阅读 1608·2021-08-16 10:57
阅读 2069·2019-08-30 14:01