Reactjs 替换内容中的字符串
查看我的Chat.js内容:Reactjs 替换内容中的字符串,reactjs,events,replace,chat,Reactjs,Events,Replace,Chat,查看我的Chat.js内容: import React, { Component } from "react"; class Chat extends Component { constructor(props) { super(props); this.state = { messages: [], message: "" }; } submitMessage(event) { event.preventDefault();
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;
我需要将上述信息转换为以下内容:
Are you good <a href="#">@Daniel</a> ?
应使用字符串替换完成此操作:
//这是一个标记“你好吗?”(用户名中带有@)
常量替换reg=/(@[a-zA-Z0-9]+)/g;
//这是作为标签“你还好吗?”(用户名中没有@)
常量替换reg=/@([a-zA-Z0-9]+)/g;
函数decorateWithLink(文本){
replace(replacementReg,replaced=>``);
}
您应该在组件中使用:
this.setState(状态=>({
信息:[
{decorateWithLink(this.state.message)} ,
…状态信息
],
消息:“”//使用此消息,您无需再次调用this.setState
}));
应使用字符串替换完成:
//这是一个标记“你好吗?”(用户名中带有@)
常量替换reg=/(@[a-zA-Z0-9]+)/g;
//这是作为标签“你还好吗?”(用户名中没有@)
常量替换reg=/@([a-zA-Z0-9]+)/g;
函数decorateWithLink(文本){
replace(replacementReg,replaced=>``);
}
您应该在组件中使用:
this.setState(状态=>({
信息:[
{decorateWithLink(this.state.message)} ,
…状态信息
],
消息:“”//使用此消息,您无需再次调用this.setState
}));
我已经更新了您的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: ""
});
}
submitMessage(事件){
event.preventDefault();
const{message}=this.state;
让msg=message.replace(/@([a-zA-Z0-9]+)/g,值=>`);
this.setState(state=>({
消息:[,…state.messages]
}));
这是我的国家({
信息:“
});
}
以下是工作代码:我已更新了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: ""
});
}
submitMessage(事件){
event.preventDefault();
const{message}=this.state;
让msg=message.replace(/@([a-zA-Z0-9]+)/g,值=>`);
this.setState(state=>({
消息:[,…state.messages]
}));
这是我的国家({
信息:“
});
}
以下是工作代码:我编辑演示链接请刷新该链接不适用于我。请刷新。我编辑了链接:另外,演示:我编辑了演示链接请刷新该链接不适用于我。请刷新。我编辑了链接:还有,演示:谢谢。但它有一点问题。但我需要这个代码在其他组件上使用。非常感谢,谢谢。但它有一点问题。但我需要这个代码在其他组件上使用。非常感谢。现在我想尝试添加路由器而不是href。我想这不会是一件容易的事,因为没有问题,我想我必须花六个月的时间来做它(我想成为它的贡献者之一:))现在我想尝试添加路由器,而不是href。我认为这并不容易,因为没问题,我想我必须为它工作六个月我想成为它的贡献者之一:))
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: ""
});
}