具体步骤如下。
页面初始化时,通过扩展参数传值;
mui在初始化页面时,提供了extras配置参数,通过该参数可以设置页面参数,从而实现页面间传值;mui框架在如下几种场景下,会执行页面初始化 *** 作:
- 通过muiopenWindow,打开新页面(若目标页面为已预加载成功的页面,则在openWindow方法中传递的extras参数无效);
- 通过muiinit,方法创建子页面;
- 通过muiinit,方法预加载页面;
- 通过muipreload,方法预加载页面;
官方:做web app,一个无法避开的问题就是转场动画;web是基于链接构建的,从一个页面点击链接跳转到另一个页面,如果通过有刷新的打开方式,用户要面对一个空白的页面等待;
如果通过无刷新的方式,用Javascript移入DOM节点(常见的SPA解决方案),会碰到很高的性能挑战:DOM节点繁多,页面太大,转场动画不流畅甚至导致浏览器崩溃;
mui的解决思路是:单webview只承载单个页面的dom,减少dom层级及页面大小;页面切换使用原生动画,将最耗性能的部分交给原生实现

通过id属性获取,是从DOM文档树中获取单个指定元素的最为快捷的方法。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">课程目标
理解react的框架使用中,真实dom存在的意义。
使用真实dom和使用虚拟dom的场景。
灵活掌握并能够合理使用 *** 作真实dom的方法。
知识点
react中提供了ref这个属性来获取原生的dom节点,使用方式:在虚拟dom中添加ref属性,即可在组件实例的refs属性中获取该真实dom节点。由于组件实例化的时候,真实dom节点是在最后才生成的。所以,我们获取真实dom节点应该是在componentDidMount这个生命周期中。
class HelloWorld extends Component{
render(){
return <div>
<h1 ref="h">hello world</h1>
</div>
}
componentDidMount(){
consolelog(thisrefsh); // 打印的是h1这个dom节点。
}
}
ref也可以使用在组件标签上使用,此时获取的是该组件标签的组件实例。如下:
class Button extends Component{
render(){
return <button>确定</button>
}
}
let btn = ReactcreateElement()
propsref function
propsref(btn)
class HelloWrold extends Component{
getBtnThis = btn => {
consolelog(btn) // Button组件的第二个组件实例
}
render(){
return <div>
<Button ref="btn"></Button>
/
let btn = new Button()
btnref === typeof function
btnref(btn)
}
findDomNode这个方法可以根据组件实例(每个组件实例都对应的有一段dom节点获取该组)件实例所对应的真实dom节点。该方法的使用如下
/
context 一个组件的组件实例
dom 该组件实例所对应的真实dom节点。
/
const dom = ReactfindDomNode(context);
unmountComponentAtNode该方法的作用是:从 DOM 中移除已经挂载的 React 组件,清除相应的事件处理器和 state。如果在 container 内没有组件挂载,这个函数将什么都不做。如果组件成功移除,则返回 true;如果没有组件被移除1,则返回 false。
const result = ReactunmountComponentAtNode(DOMElement container)
掌握在什么情况下需要真实的dom节点;react的虚拟dom不能实现的原生dom的api的情况,比如:文本框自动聚焦,音频视频相关的api,获取元素的宽高和位置等。基本原则是:能不用真实dom节点尽量不用,实在不能用虚拟dom的时候,才使用真实dom节点。再一种情况是,现有的一些库是针对dom *** 作而构建的,那么想要把这些库和react结合在一起,就必须要使用真实dom节点,比如swiper betterScroll echarts等等。
授课思路
dom访问元素节点的方法:1 getElementById(): 通过元素id访问元素;2 getElementsByTagName(): 通过标签名访问元素;3 getElementsByClassName(): 通过class名访问元素;4 querySelector(): 通过css选择器访问元素;5 querySelectorAll(): 通过css选择器访问元素,获取到的是一个NodeList;6 getAttribute(): 获取元素的属性;7 setAttribute(): 设置元素的属性;8 removeAttribute(): 删除元素的属性;9 hasAttribute(): 检查元素是否具有某个属性;10 createElement(): 创建元素;11 appendChild(): 向元素节点添加子节点;12 removeChild(): 从元素节点移除子节点;13 replaceChild(): 用新节点替换旧节点;14 insertBefore(): 在指定子节点前插入新节点;15 cloneNode(): 复制元素节点;16 parentNode(): 获取元素的父节点;17 nextSibling(): 获取下一个兄弟节点;18 previousSibling(): 获取上一个兄弟节点;19 firstChild(): 获取第一个子节点;20 lastChild(): 获取最后一个子节点。
拓展:HTML标签的换行可以使用
标签,这个标签是用来换行的,在HTML中使用
即可实现换行效果。
一、react中获取dom有以下提供三种方法:
2react原生函数findDOMNode获取dom
3通过ref来定位一个组件,切记ref要全局唯一(类似id)
ref Callback 属性
React支持一种非常特殊的属性,你可以附加到任何的组件上。 ref 属性可以是一个回调函数,这个回调函数会在组件被挂载后立即执行。被引用的组件会被作为参数传递,回调函数可以用立即使用这个组件,或者保存引用以后使用(或者二者皆是)。
二、转发 Refs
通过这种方式,使用 FancyButton 的组件可以获得底层 button DOM 节点的引用并在必要时访问它 - 就像他们直接使用 DOM button 一样。
以下是对上述示例中发生情况逐步的说明:
利用javascript
写一个在页面点击加减按钮实现数字的累加。
简略的html大概如此。看得懂就好不要在意这些细节啊
<input
type="button"
value="+"
onclick="jia(this)"
/>
<label
class="num">0</label>
<input
type="button"
value="-"
onclick="jian(this)"
/>
样子是这样的
javascript
代码如下
<script
type="text/javascript">
function
jia(a)
{
var
nextnode
=
anextElementSibling;//获取下一个节点
alert(nextnodeinnerHTML);
var
a
=
parseInt(nextnodeinnerHTML)
a
+=
1;
nextnodeinnerHTML
=
a;
}
function
jian(a)
{
var
previousnode
=
apreviousElementSibling;
var
a
=
parseInt(previousnodeinnerHTML)
a
-=
1;
a
=
a
>
0
a
:
0;
previousnodeinnerHTML
=
a;
}
</script>
解释一下:
function
jian(a)和
function
jia(a)就是当前点击的对象了。在onclick事件接的方法里加了this;
-
nextElementSibling
获取当前节点的下一个节点(获得下一个兄弟节点)
-
previousElementSibling
获取当前节点的上一个节点
注意:
IE将跳过在节点之间产生的空格文档节点(如:换行字符),而Mozilla不会这样——FF会把诸如空格换行之类的排版元素视作节点读取,因此,在ie
中用nextSibling便可读取到的下一个节点元素,在FF中就需要这样写:nextElementSibling了。
上面的解释的意思的使用
nextElementSibling
和previousElementSibling
获得下一个兄弟节点和上一个兄弟节点,可以去掉换行,空格上面之类的,直接找到我们标签元素。但是下面的两个
nextSibling
previousSibling
也是得下一个兄弟节点和上一个兄弟节点的,只是在IE中好用
--------------------关键字解释
parseInt
转化功能。
a
=
a
>
0
a
:
0;----三元表达式。
以上就是关于mui 怎么获取openwindow 传值全部的内容,包括:mui 怎么获取openwindow 传值、DOM中如何获得一个节点的ID NAME 等、ref与DOM-findDomNode-unmountComponentAtNode等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)