reactjs - 在 ReactJS 中选择一个 DOM 元素
问题描述
我在 ReactJS 世界中相对较新,我想知道如何从 jsx 中选择 h1 标签的内容。我尝试使用 refs,但事实证明,它适用于输入表单。有什么办法可以解决..!
render(){
return(
<div style={{width: '100%', margin: 'auto'}}>
<Grid className = "landing-grid">
<Cell col={12}>
<img
// src = "https://cdn3.iconfinder.com/data/icons/avatars-15/64/_Bearded_Man-17-512.png"
src = "https://cdn3.iconfinder.com/data/icons/avatars-15/64/_Ninja-2-512.png"
alt = "avatar"
className = "avatar-img"
/>
<div className="banner-text">
<h1>Full Stack Developer</h1>
<hr />
<p>JavaScript | React | NodeJS | Express | MongoDB | HTML/CSS | Python</p>
<div className="social-links">
<a href="https://www.linkedin.com/in/shamant-bhimanagoud-naik" rel="noopener noreferrer" target="_blank">
<i className="fa fa-linkedin-square" aria-hidden="true" />
</a>
<a href="https://github.com/sham1516/" rel="noopener noreferrer" target="_blank">
<i className="fa fa-github-square" aria-hidden="true" />
</a>
<a href="https://twitter.com/ShamantN" rel="noopener noreferrer" target="_blank">
<i className="fa fa-twitter-square" aria-hidden="true" />
</a>
</div>
</div>
</Cell>
</Grid>
</div>
);
}
我要动画
全栈开发人员
. 那么如何选择..!解决方案
您不需要为此提供参考。您只需要设置组件状态,并在您的渲染方法中使用该状态。在这种情况下,状态只是一个数字,表示到目前为止我们已经获得的字符串有多远,渲染方法需要创建一堆跨度,并在其中一些上设置类。
以下是提取到可重用组件的方式:
class Fancy extends React.Component {
constructor() {
this.state = {
index: 0,
}
}
componentDidMount() {
this.intervalId = setInterval(() => {
this.setState(prev => ({ index: prev.index + 1 }));
}, 50);
}
componentDidUpdate() {
if (this.state.index >= this.props.text.length) {
clearInterval(this.intervalId);
}
}
componentWillUnmount() {
clearInterval(this.intervalId);
}
render () {
const spans = [];
for (let i = 0; i < this.props.text.length; i++) {
spans.push((
<span key={i} className={i < this.state.index ? 'fade' : undefined}>
{this.props.text[i]}
</span>
));
}
return (
<React.Fragment>
{spans}
</React.Fragment>
)
}
}
像这样使用:
<div className="banner-text">
<h1><Fancy text="Full Stack Developer" /></h1>
推荐阅读
- sql - 如何在 Oracle 选择语句中声明变量
- sql-server - 在另一个查询中使用来自一个查询的参数
- php - 为什么 HTML 电子邮件只是在 php 中显示代码
- ruby - 无法在 macOS Mojave 10.14.2 中使用 RVM 安装任何 ruby 版本
- .net - 面板中的控件被隐藏,直到我调整窗口大小
- inno-setup - 使用 Inno Setup 增加日期以实施试用期
- python - Python - 将文本文件解析为 json
- express - 使用 Express 服务器后端的 Create-React-App
- mongodb - 如何在 mongoTemplate 上更新多级嵌入数组
- reactjs - 如何用 redux 显示我的变量的状态?