javascript - 无法在 Safari 上执行提交按钮
问题描述
我正在尝试使用具有提交类型的按钮并为其分配功能。每当我尝试使用 Safari 执行此操作时,页面都会重新加载。就像功能没有分配给按钮一样。我检查了所有其他浏览器,其他任何地方都没有问题。
import React, { useState, useEffect } from "react";
import { useSelector } from "react-redux";
import "./Chat.css";
import Message from "./message/Message";
import db from "../../firebase/firebase";
import firebase from "firebase";
import "firebase/firestore";
import { selectChatId, selectChatName } from "../../store/chatSlice";
import { selectUser } from "../../store/userSlice";
import FlipMove from "react-flip-move";
function Chat() {
const [inputValue, setInputValue] = useState("");
const user = useSelector(selectUser);
const chatId = useSelector(selectChatId);
const chatName = useSelector(selectChatName);
const [messages, setMessages] = useState([]);
useEffect(() => {
if (chatId) {
db.collection("chats")
.doc(chatId)
.collection("messages")
.orderBy("timestamp", "desc")
.onSnapshot((snapshot) => {
setMessages(
snapshot.docs.map((doc) => ({
id: doc.id,
data: doc.data(),
}))
);
});
}
}, [chatId]);
const sendMessage = (e) => {
e.preventDefault();
db.collection("chats").doc(chatId).collection("messages").add({
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
message: inputValue,
displayName: user.displayName,
photo: user.photo,
email: user.email,
});
setInputValue("");
};
return (
<div className="chat">
<div className="chat__header">
<h4>
To: <span className="chat__userName">{chatName}</span>
</h4>
</div>
<div className="chat__messages">
<FlipMove>
{messages.map(({ id, data }) => (
<Message key={id} content={data} />
))}
</FlipMove>
</div>
<div className="chat__messageInput">
<form>
<input
placeholder={"Message"}
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
disabled={!chatId}
/>
<button
type="submit"
className="chat__messageInputButton"
onClick={sendMessage}
disabled={!chatId}
></button>
</form>
</div>
</div>
);
}
export default Chat;
我从来没有遇到过这样的问题,我不知道发生了什么。有任何想法吗?
解决方案
您还可以使用 onSubmit 事件:
return (
<form onSubmit={yourSubmitFunction}>
<button type='submit'>Submit</button>
</form>
);
推荐阅读
- python - 如何删除字符串中的空格和行?
- javascript - 删除地图函数中的重复项
- sql - 日期窗口功能
- python - Python中的Self语法错误:无效的语法,字符串的属性不存在?
- c++ - 声明指向多维数组的指针并在类中分配数组
- spring - 弹簧提供的组件有哪些?
- 64-bit - 运行 vulkaninfo 返回错误:vulkaninfo.h:477: failed with ERROR_INITIALIZATION_FAILED
- node.js - discord.js 从用户 ID 中查找最后一条消息的日期?
- python - 字符串替换将结果转换为整数python
- .net - Dotnet 和 Azure 事件中心:按位置检索事件