我正在 React 中从头开始编写一个图像库,当单击图像时,会弹出一个模式(与我的库组件不同的组件)。我想用左箭头和右箭头在图片之间导航,而不仅仅是使用屏幕上添加的箭头(onclick),但目前它只关注当我单击一次时的模式,然后我也可以使用键盘导航(onKeyDown)。
我已将 tabIndex="0" 添加到我的 div 中,但我仍然需要单击该 div 一次才能聚焦于它。
<div tabIndex="0" onKeyDown={(event) => this.onKeyNavigation(event, ImageUrl, currentIndex, ImageUrls)}>
Run Code Online (Sandbox Code Playgroud)
onKeyNavigation = (event, ImageUrl, currentIndex, ImageUrls) => {
if ((event.keyCode) === 39) {
this.props.loadNext(ImageUrl, currentIndex, ImageUrls)
}
else if ((event.keyCode) === 37) {
this.props.loadPrevious(ImageUrl, currentIndex, ImageUrls)
}
else if ((event.keyCode) === 27) {
this.props.onClose()
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将带有后端的 React 应用程序部署到 github 页面上的同一个存储库中。在我向其中添加后端代码之前,一切正常。我可以部署前端,但我不知道如何将后端部署到github。在我的 package.json 中,我有以下内容:
....
"scripts": {
"start": "react-scripts start",
"server": "nodemon server.js",
"client": "npm run start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\""
}
...
Run Code Online (Sandbox Code Playgroud)
我已经推送到github了。安装了 gh-pages 包。我已经添加了
"homepage" : "https://[your-user-name].github.io/[your-repo-name]/"
“predeploy”:
“deploy”:
Run Code Online (Sandbox Code Playgroud)
我认为这是我出错的地方。我知道 predeploy 和 deploy 应该指定什么,但我尝试输入一千个不同的版本,但出现错误。
因此,我尝试从Firestore中获取数据,当我对其进行控制台日志记录时,却将集合的内容取回,但是当我将代码移至某个函数时,便无法将其返回。
此代码有效:
const db = firebase.firestore();
db.settings({ timestampsInSnapshots: true});
db.collection('story').get().then((snapshot) => {
snapshot.docs.forEach(doc => {console.log(doc.data())
;})
})
Run Code Online (Sandbox Code Playgroud)
这行不通。(它可以编译,但是不返回任何内容):
...
getMyStory = () => {
const db = firebase.firestore();
db.settings({ timestampsInSnapshots: true});
db.collection('story').get().then((snapshot) => {
snapshot.docs.forEach(doc => {
let items = doc.data();
})
});
return this.items;
}
render () {
return (
<p>{this.getMyStory}</p>
);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我已经浏览了 Firebase 文档,另外我在 Firebase 中找到了一些关于 set() 与 update() 的关于 stackoverflow 的主题:例如这里
很明显,他们两个之间的区别是什么。
在下面的代码中,为什么 update() 会覆盖我现有的数据?
function saveChanges(event) {
event.preventDefault();
let modifiedTitle = document.getElementById('blog-title').value;
let modifiedContent = document.getElementById('blog-content').value;
let modifiedId = document.getElementById('blog-id-storage').innerHTML;
let postData =
title: modifiedTitle,
content: modifiedContent
};
let updates = {};
updates[modifiedId] = postData;
firebase.database().ref().child('posts/').update(updates);
}
Run Code Online (Sandbox Code Playgroud)
我最初有一个标题、内容、datePosted 和 Id,当我更新它时,标题和内容会更新,而 dataPosted 和 Id 会被删除。为什么?虽然这应该是 set() 的行为?