Reactjs 替换内容中的字符串

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();

查看我的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;
我需要将上述信息转换为以下内容:

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: ""
            });
          }