gpt4 book ai didi

javascript - React 组件在没有事件的情况下不会呈现

转载 作者:行者123 更新时间:2023-12-01 02:24:08 25 4
gpt4 key购买 nike

我正在学习 React,并且正在做一个个人项目,其中我正在使用 api.ai 代理创建一个聊天机器人。我在我的项目中使用 api.ai npm 包,用户可以提出问题,我的代理将根据问题回复答案。我从代理处获得了正确的响应,但响应未呈现在页面直到出现按键事件。

下面是我的代码

    import React, {
Component
} from 'react';
import ChatMessageComposer from
'../ChatMessageComposer/ChatMessageComposer';
import ChatHistory from '../ChatSection/ChatHistory/ChatHistory';
import apiai from 'apiai-promise';
class Chat extends Component {
state = {
messages: [], //[{from: 'bot', message: 'Hi'}]
inputValue: ''
}
atKeyPress = (event) => {
if (event.key !== 'Enter') {
return;
}
this.setState((prevState) => {
prevState.messages.push({
message: this.state.inputValue,
from: 'you'
})
})

let data = this.state.inputValue;
var app = apiai("");

app.textRequest(data, {
sessionId: ''
}).then((response) => {
console.log(response);
this.setState((prevState) => {
prevState.messages.push({
message: response.result.fulfillment.speech,
from: 'bot'
})
})
}).catch((error) => {
console.log(error);
})


this.setState({
inputValue: ''
});

}
render() {
console.log("here ", this.state.messages)
return (<
div >
<
ChatHistory messages={
this.state.messages
} > < /ChatHistory> <
ChatMessageComposer
changed={
(event) => this.setState({
inputValue: event.target.value
})
}
atKeyPress={
(event) => this.atKeyPress(event)
}
value={
this.state.inputValue
}

>
< /ChatMessageComposer> <
/div>

)
}

}

    export default Chat;

这是chatmessagecomposer组件,

    export default Chat;
const chatMessageComposer = (props) => {
return (
<div className={classes.Chatinput}>
<input placeholder="Talk to me..." className={classes.Userinput} type="text" value={props.value} onChange={props.changed} onKeyPress= {props.atKeyPress}/>
</div>
)
}
const chatHistory = (props) => (
<div className={classes.ChatOutput}>
{props.messages.map((message, i)=>(
<ChatMessage key={i} message={message} />
))}
</div

任何帮助将不胜感激

最佳答案

您没有在 setState 方法调用中返回突变状态。尝试这样做

this.setState((prevState) => {
prevState.messages.push({
message: response.result.fulfillment.speech,
from: 'bot'
})
return prevState;
})

关于javascript - React 组件在没有事件的情况下不会呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com