react-native - React Native:当用户单击发送按钮而不刷新时显示消息
问题描述
我只使用状态创建了一个简单的聊天应用程序系统。
class Messages extends React.Component {
constructor(props) {
super(props)
this.state = {
msg: [], //all messages in db
msgS: '', // message send on click
}
}
async sendMsgS() {
let formData = new FormData();
formData.append('key', '***'); // API key
formData.append('userId', '1');
formData.append('msg', this.state.msgS);
try {
let response = await fetch('https://www.globalfidelio.com/gfn_arcol/api/send_msg.php',{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
},
body: formData
});
let res = await response.json();
if(response.status >= 200 && response.status < 300 ) {
console.warn("message envoyé " + res.message);
} else {
let errors = res;
throw errors;
}
} catch (errors) {
console.warn("error msg is_ " + errors);
}
};
onPressSend() {
this.sendMsgS().then(() => {
this.setState({msgS: ''})
});
console.log(this.state.msg.Conversation.reverse());
}
componentDidMount() {
getMsgFromApi().then(data => {
this.setState({ msg: data})
});
};
它工作正常,但是当我单击 sen 按钮时,我必须刷新以显示我发送的消息,我想要它显示我发送的消息而不刷新。我不知道我该怎么做
解决方案
这是反应行为。如果你改变状态,react 会调用 render 方法。为避免这种情况,您可以使用此生命周期方法:
shouldComponentUpdate(nextProps, nextState)
我看不到您的渲染方法以查看您如何显示味精。但是,如果不刷新(但警报),您将无法显示任何更改。
这里 shouldComponentUpdate 文档链接
推荐阅读
- javascript - 无法将图像导入 firebase-messaging-sw.js:“无法在模块外使用导入语句”
- python - 在 heroku 上部署 selenium 脚本时出现问题
- javascript - 最近创建的对象未保存
- outlook - Outlook 生态系统中的 COM 加载项 EOL
- java - 使用 Spring Boot 连接运行 Postgres 的预先存在的 Docker 容器
- reactjs - React Beautiful DnD 无法将项目拖放到列表底部或视口外部
- android - 创建活动日志
- compiler-construction - 为什么 CISC 指令被认为比 RISC 指令更容易/更快地编译?
- identityserver4 - 是否可以设置我自己的本地 IdentityServer 实例
- vb.net - FormClosing 事件上平板电脑和消息框之间的问题