React-Chat-Widget道具未转发

问题描述 投票:0回答:1

我正在使用react-chat-widget并尝试从我的应用程序的基类调用由小部件的renderCustomComponent函数呈现的自定义组件中的函数。

这是基类的代码:

import React, { Component } from 'react';
import { Widget, handleNewUserMessage, addResponseMessage, addUserMessage, renderCustomComponent } from 'react-chat-widget';
import 'react-chat-widget/lib/styles.css';
import Reply from './Reply.js';

class App extends Component {

  handleNewUserMessage = (newMessage) => {
      renderCustomComponent(Reply, this.correct);
  }

  correct = () => {
    console.log("success");
  }

  render() {
    return (
      <div className="App">
        <Background />
        <Widget
          handleNewUserMessage={this.handleNewUserMessage}
        />
      </div>
    );
  }
}

export default App;

以下是自定义组件Reply的代码:

import React, { Component } from 'react';
import { Widget, addResponseMessage, renderCustomComponent, addUserMessage } from 'react-chat-widget';

class Reply extends Component {

    constructor(props) {
        super(props);
    }

    sendQuickReply = (reply) => {
        console.log(this.props); //returns empty object
        //this.props.correct();  <-- should be called
    };

    render() {
        return (
            <div className="message">
              <div key="x" className={"response"}onClick={this.sendQuickReply.bind(this, "xx")}>xx</div>
            </div>)
    }
}

export default Reply;

根据ReactJS call parent method,这应该工作。但是,当我打印this.props对象时它是空的,尽管renderCustomComponent方法的文档声明要渲染的组件的第二个参数是组件需要的道具(在这种情况下是父类函数)。

我哪里出错了?

javascript reactjs
1个回答
1
投票

第二个参数被视为道具,但它应该是一个对象。你会把它传递给它

handleNewUserMessage = (newMessage) => {
      renderCustomComponent(Reply, {correct: this.correct});
}
© www.soinside.com 2019 - 2024. All rights reserved.