#amazon-web-services #react-native #aws-amplify
#amazon-web-services #react-native #aws-amplify
Вопрос:
Когда, как только я отправляю сообщение, все сообщения над ним удаляются. В случае, если я снова извлекаю все сообщения из базы данных, это работает. Итак, ниже приведен текст моего кода, в котором я делаю запрос на усиление каждый раз, когда генерируется новое сообщение:
const ChatRoomScreen = () => {
const [messages, setMessages] = useState([]);
const [myId, setMyId] = useState(null);
const route = useRoute();
const fetchMessages = async () => {
const messagesData = await API.graphql(
graphqlOperation(
messagesByChatRoom, {
chatRoomID: route.params.id,
sortDirection: "DESC",
}
)
)
//console.log("FETCH MESSAGES")
setMessages(messagesData.data.messagesByChatRoom.items);
}
useEffect(() => {
fetchMessages();
}, [])
useEffect(() => {
const getMyId = async () => {
const userInfo = await Auth.currentAuthenticatedUser();
setMyId(userInfo.attributes.sub);
}
getMyId();
}, [])
useEffect(() => {
const subscription = API.graphql(
graphqlOperation(onCreateMessage)
).subscribe({
next: (data) => {
const newMessage = data.value.data.onCreateMessage;
if (newMessage.chatRoomID !== route.params.id) {
//console.log("Message is in another room!")
return;
}
setMessages([newMessage, ...messages]); //This line creates issues
//If I fetch all messages again from database, it works.
}
});
return () => subscription.unsubscribe();
}, [])
Комментарии:
1. Какие конкретные проблемы создает эта строка?
2. По сути, это приведет к удалению ранее созданных сообщений, и созданное новое сообщение будет отображаться только на экране.