javascript-React.js-使用来自组件层次结构不同级别的DOM元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-React.js-使用来自组件层次结构不同级别的DOM元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2183字,纯文字阅读大概需要4分钟。
内容图文
![javascript-React.js-使用来自组件层次结构不同级别的DOM元素](/upload/InfoBanner/zyjiaocheng/684/20e3746d793948be870992cbe276bf8a.jpg)
我们需要在window.onresize和window.onscroll上执行与组件层次结构不同部分中的DOM元素相关的一些操作:
1)调整为移动分辨率时移动元素
2)滚动时更改类和样式.
问题在于元素位于React组件层次结构的不同级别,即嵌套在不同的组件中.因此,如果我理解正确,就无法使用ref来访问DOM节点.
我有:
{someCondition? < FirstComponent /> ;:< SecondComponent />}
某些条件可能会由于用户界面操作而改变,或者从页面加载开始就可能是正确的.
我试过在FirstComponent上使用componentDidMount和componentDidUpdate,但发现只有当someCondition从一开始为true时,componentDidMount才会触发,而someCondition更改时componentDidUpdate确实会触发,但是所需的DOM元素(包含在组件中)尚未准备就绪那一点,document.getElementById失败.
添加window.requestAnimationFrame没有帮助.
我想在React中应该有一个可靠的方法来做到这一点?
也许React.findDomNode?
谢谢.
解决方法:
您所描述的是React的对立面.当使用基于命令性jQuery / Dojo的框架时,这是我期望的一种方法.
使用React,您正在开发功能组件,这些组件知道如何将状态转换为呈现的HTML,并且您需要以不同的方式解决问题.
对于您的问题,您的window.onresize和window.onscroll回调不应尝试操纵React DOM元素.相反,它应该只更新状态并让React重新渲染.您的React组件应接收此状态并进行相应渲染.
这是一个简单的示例,其中主应用监听这些事件并更新其状态,从而触发重新渲染.该应用将状态作为道具传递给孩子.孩子们使用道具有条件地更改其CSS类名称.他们可以轻松呈现不同的html或内联样式.
const Component2 = ({someCondition2}) => {
const className = someCondition2 ? "foo" : "bar";
return <div className={className}>Hello</div>;
};
const Component1 = ({someCondition1, someCondition2}) => {
const className = someCondition1 ? "A" : "B";
return (
<div className={className}>
<Component2 someCondition2={someCondition2} />
</div>
);
};
class App extends React.Component {
state = {
someCondition: false,
someCondition2: true,
};
componentDidMount() {
window.onresize = ev => {
const someCondition = ev.xxx;
// re-render with the new state
this.setState({ someCondition });
};
window.onscroll = ev => {
const someCondition2 = ev.xxx;
this.setState({ someCondition2 });
};
}
render() {
const {someCondition, someCondition2} = this.state;
return (
<Component1
someCondition1={someCondition1}
someCondition2={someCondition2} />
);
}
}
React.render(<App />, document.getElementById("container"));
内容总结
以上是互联网集市为您收集整理的javascript-React.js-使用来自组件层次结构不同级别的DOM元素全部内容,希望文章能够帮你解决javascript-React.js-使用来自组件层次结构不同级别的DOM元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。