reactjs - 替换内容中的字符串
问题描述
看看我的Chat.js内容:
import React, { Component } from "react";
class Chat extends Component {
constructor(props) {
super(props);
this.state = {
messages: [],
message: ""
};
}
submitMessage(event) {
event.preventDefault();
this.setState(state => ({
messages: [<li>{this.state.message}</li>, ...state.messages]
}));
this.setState({
message: ""
});
}
render() {
return (
<>
<div class="container py-3">
<h2 className="text-center mb-4">Simple Chat</h2>
<form
onSubmit={e => {
this.submitMessage(e);
}}
>
<input
type="text"
className="form-control"
placeholder={"Enter your message..."}
value={this.state.message}
onChange={e => this.setState({ message: e.target.value })}
/>
<button type="submit" className="btn btn-success mt-2">
Send Message
</button>
</form>
<div className="container border mt-2">
<ul className="group-list mt-3 pt-2">{this.state.messages}</ul>
</div>
</div>
</>
);
}
}
export default Parent;
另外,这是我的例子: https ://codesandbox.io/s/objective-water-1e8uq
当有人用@输入用户名时,我需要替换用户链接
例如,这是我的消息内容:
Are you good @Daniel ?
我需要将上述消息转换为以下内容:
Are you good <a href="#">@Daniel</a> ?
我使用react-router-dom
,所以我需要用这个代码替换链接:
例如:
<Router>
<Link to={ '#'} onClick={() => {this.example()}}>
@Daniel
</Link>
</Router>;
解决方案
我已经更新了您的 submitMessage 函数,代码如下:
submitMessage(event) {
event.preventDefault();
const { message } = this.state;
let msg = message.replace(/@([a-zA-Z0-9]+)/g, value => `<a href="#"> ${value} </a>`);
this.setState(state => ({
messages: [<li dangerouslySetInnerHTML={{__html: msg}} />, ...state.messages]
}));
this.setState({
message: ""
});
}
推荐阅读
- php - 如何在 WordPress 中创建搜索功能?
- javascript - Laravel @yield 正在将引号转换为 html 实体
- java - 如何在 Spring Data JPA 中使用 getOne() 方法捕获 EntityNotFoundException?
- uber-api - 将 Uber Receipt 直接添加到 Airtable
- swift - 基于视图的 TableView:将弹出窗口的列初始化为相同的值并与它们交互(Xcode Storyboard)
- angular - 从 app.component 将值推送到 home.component 中的数组
- python - 打印运行线程名称 | Concurrent.futures | 蟒蛇 3
- vba - Excel VBA - 工作簿中 1 的总和不等于 VBA 中的 1
- c# - 当 EncodeToPNG() 创建过大的缓冲区时,如何将大的 Texture2D 保存到磁盘?
- python-3.x - Python 子进程错误 22 - 在调试时有效,但在运行时无效