我正在使用react-firebase-file-uploader将头像上传到firebase存储.但是,每当我上传Portrait Orientation图像(特别是在Android和IOS设备上拍摄的图像- 它们的元数据中往往会有OrientationRotate 90 CW)时,图像会旋转90度.
我以前读过这个,我相信这些拍摄的智能手机图像总是在横向,但方向是存储EXIF元.如果我弄错了,请纠正我?
下面是使用react - firebase -file-uploader上传图像的组件示例- 我知道这个包不是问题,这个问题的解决方案可能适用于许多应用程序.
那么,我需要做什么来阅读EXIF方向,更改轮换(如果需要,或者我需要通过文件上传传递元数据?)并继续上传?
class ProfilePage extends Component {
state = {
avatar: "",
isUploading: false,
progress: 0,
avatarURL: ""
};
handleProgress = progress => this.setState({ progress });
handleUploadError = error => {
this.setState({ isUploading: false });
console.error(error);
};
handleUploadSuccess = filename => {
this.setState({ avatar: filename, progress: 100, isUploading: false });
firebase
.storage()
.ref("images")
.child(filename)
.getDownloadURL()
.then(url => …
Run Code Online (Sandbox Code Playgroud) 我的任务是将 ES2019 编译的 React 代码转换回 JSX。客户丢失了他们的原始文件,我举手完成了任务。不幸的是,有几百个文件,当我一个一个地转换它们时,我认为必须有一种方法可以一次编译它们到 JSX。
例如,需要转换的文件片段可能是...
import _extends from "@babel/runtime/helpers/extends";
import React from 'react';
import { Item } from './Item';
const Container = props => {
return /*#__PURE__*/React.createElement("div", _extends({}, props, {
component: props.component || Item,
}));
};
export default Container;
Run Code Online (Sandbox Code Playgroud)
我想转变为...
import React from 'react';
import { Item } from './Item';
const Container = (props) => {
return <div component={props.component || Item} />;
};
export default Container;
Run Code Online (Sandbox Code Playgroud)
我知道我可以将 JSX 转换为 JS,但如何在数百个文件中反转它?
我在ReactJS和GatsbyJS(V2)项目中使用react-transition-group.
我的页面过渡使用动画,但Link
退出时,exiting
动画被缩短,因为下一页已准备好进入.
我已经尝试延迟Link
动作,但是当页面更改被延迟时,exit
动画不会被触发,直到delay
结束并且Link
被动作.
delay
在启动exiting
动画的同时,如何更改页面onClick
?或者,是否有更好的方法或props
可用?
这是我的代码
Layout.js
class Layout extends React.Component {
...
return (
<Transition>{children}</Transition>
);
}
Run Code Online (Sandbox Code Playgroud)
Transition.js
class Transition extends React.Component {
constructor(props) {
super(props);
this.state = { exiting: false };
this.listenerHandler = this.listenerHandler.bind(this);
}
listenerHandler() {
this.setState({ exiting: true });
}
componentDidMount() {
window.addEventListener(historyExitingEventType, this.listenerHandler);
}
componentWillUnmount() {
window.removeEventListener(historyExitingEventType, this.listenerHandler);
}
static getDerivedStateFromProps({ …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Firebase 在我们的应用程序中使用GoogleAuthProvider
. 但是,如果新用户还不是经过身份验证的用户,我不希望他们登录。
如果用户存在,则将其登录并console.log('user ' + user.email + ' does exist!');
。
但是,如果用户不存在。然后不允许身份验证和console.log('user ' + user.email + ' does not exist!')
var googleProvider = new firebase.auth.GoogleAuthProvider();
export const doSignInWithGoogle = () => auth.signInWithPopup(googleProvider);
googleLogin = () => {
auth
.doSignInWithGoogle()
.then(result => {
var user = result.user;
const userRef = db.collection('users').doc(user.uid);
userRef.get().then(docSnapshot => {
if (docSnapshot.exists) {
userRef.onSnapshot(() => {
console.log('user ' + user.email + ' does exist!');
});
} else …
Run Code Online (Sandbox Code Playgroud) javascript firebase reactjs firebase-authentication google-cloud-firestore
我试图addEventListener
在用户scroll
进入视图时使用<div id="container">
.我已经通过滚动高度,但我试图这样做addEventListener
的时候<div>
是在窗口的顶部.
handleHeaderStuck = () => {
if (this.innerContainer.scrollTop <= 500 && this.state.isStuck === true) {
this.setState({isStuck: false});
}
else if (this.innerContainer.scrollTop >= 500 && this.state.isStuck !== true) {
this.setState({isStuck: true});
}
}
Run Code Online (Sandbox Code Playgroud)
setState
滚动时会这样500px
.
如何500px
在用户id="container"
作为窗口顶部时替换要设置的条件?当用户到达div的底部时,也将isStuck
状态替换为isStuckBottom
.
完整的代码是
constructor(props) {
super(props)
this.state = {
isStuck: false,
}
this.handleHeaderStuck = this.handleHeaderStuck.bind(this)
}
innerContainer = null
componentDidMount () {
this.innerContainer.addEventListener("scroll", this.handleHeaderStuck);
}
componentWillUnmount …
Run Code Online (Sandbox Code Playgroud) 我收到错误Warning: Cannot update during an existing state transition (such as within render). Render methods should be a pure function of props and state.
。
看来是因为这段代码
const LoginAuth = () => {
navigate(routes.INDEX);
return null;
};
Run Code Online (Sandbox Code Playgroud)
删除navigate(routes.INDEX);
停止错误。
代码有什么问题?我应该使用另一种方法来重定向authUser
吗?任何帮助表示赞赏。
它是的一部分
import React from 'react';
import { navigate } from 'gatsby';
import AuthUserContext from './AuthUserContext';
import withAuthentication from './withAuthentication';
import Layout from './Layout';
import LoginForm from './LoginForm';
import * as routes from '../../constants/routes';
const LoginAuth = () …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种解决方案来注册路线更改并state
使用setState
和应用新的useEffect
。下面的当前代码不会更新setState
更改路线时的功能。
例如,我注册pathname
的/
与location.pathname === '/'
内createContext
,如果pathname
是/
所述setState
的isHome
被登记true
,但是如果pathname
是/page-1
setState
被登记false
。
在浏览器重新加载,onMount
将state
使用正确设置,但在路线改变Link
这个没有。另外,请注意,我正在使用 Gatsby 并在这样做时导入{ Link } from 'gatsby'
创建上下文.js
export const GlobalProvider = ({ children, location }) => {
const prevScrollY = useRef(0);
const [state, setState] = useState({
isHome: location.pathname === '/',
// other states
});
const …
Run Code Online (Sandbox Code Playgroud) 我试图在样式组件文档中找到一个方法来创建一个循环.例如,我可以scss
在样式组件中实现此循环吗?
@for $i from 0 through 20 {
#loadingCheckCircleSVG-#{$i} {
animation: fill-to-white 5000ms;
animation-delay: ($i - 1.5) * 1s;
fill: white;
opacity: 0;
}
}
Run Code Online (Sandbox Code Playgroud)
可能吗?
CodeSandbox- https: //codesandbox.io/s/jj597mrvmw
我从外部API返回到我的GatsbyJS / ReactJS网站的某些数据有问题。
更具体地说,问题似乎是在GraphQL查询上使用gatsby-image
并gatsby-plugin-sharp
使用API 处理图像时出现的。...GatsbyImageSharpFluid
从1000幅图像来看,似乎只有1幅是麻烦的,返回了错误
Errors:
icc_transform: no input profile
vips_colourspace: no known route from 'cmyk' to 'srgb'
Run Code Online (Sandbox Code Playgroud)
我可以过滤掉该图像,但担心将来的图像作为API更新可能会导致相同的问题。
我怎么能够
sharp
以便可以处理图像吗?要么,filter
在处理时返回此错误的图像createRemoteFileNode
,或catch (error)
或中跳过有问题的图像createRemoteFileNode
内gatsby-node.js
是
exports.sourceNodes = async ({ actions, store, cache, createNodeId }) => {
const { createNode, createNodeField } = actions;
const { data } = await axios.get(API_URI);
for (const event of …
Run Code Online (Sandbox Code Playgroud) 我目前正在使用React和GatsbyJS构建一个网站,并尝试window.history.back(-1);
在前一页属于同一域的情况下有条件地添加导航。
一个例子是
navigateBack = () => {
if (window !== undefined) {
window.history.back(-1);
}
};
Run Code Online (Sandbox Code Playgroud)
请注意,if (window !== undefined)
允许window
在没有服务器端渲染的情况下使用。
如何在运行此功能之前检查上一页。
例如,用户是从我想要使用的外部链接导航的navigate('/stories/')
,否则如果用户来自内部页面,即'/stories/2/'
我希望他们使用window.history.back(-1);
javascript ×10
reactjs ×10
gatsby ×4
exif ×1
firebase ×1
graphql ×1
orientation ×1
react-hooks ×1