我有类似的东西:
const [loading, setLoading] = useState(false);
...
setLoading(true);
doSomething(); // <--- when here, loading is still false.
Run Code Online (Sandbox Code Playgroud)
设置状态仍然是异步的,那么等待此setLoading()调用完成的最佳方法是什么?
本setLoading()似乎并没有接受一个回调像setState()使用.
getNextPage = () => {
// This will scroll back to the top, and also trigger the prefetch for the next page on the way up.
goToTop();
if (this.state.pagesSeen.includes(this.state.page + 1)) {
return this.setState({
page: this.state.page + 1,
});
}
if (this.state.prefetchedOrders) {
const allOrders = this.state.orders.concat(this.state.prefetchedOrders);
return this.setState({
orders: allOrders,
page: this.state.page …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python通过BigQuery API连接到Google BigQuery.
我在此处关注此页:https: //cloud.google.com/bigquery/bigquery-api-quickstart
我的代码如下:
import os
import argparse
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.client import GoogleCredentials
GOOGLE_APPLICATION_CREDENTIALS = './Peepl-cb1dac99bdc0.json'
def main(project_id):
# Grab the application's default credentials from the environment.
credentials = GoogleCredentials.get_application_default()
print(credentials)
# Construct the service object for interacting with the BigQuery API.
bigquery_service = build('bigquery', 'v2', credentials=credentials)
try:
query_request = bigquery_service.jobs()
query_data = {
'query': (
'SELECT TOP(corpus, 10) as title, '
'COUNT(*) as unique_words '
'FROM [publicdata:samples.shakespeare];')
} …Run Code Online (Sandbox Code Playgroud) 是否有办法注入的环境变量,例如REACT_APP_MY_API到index.html文件?
根据这个,它可以做到,但我似乎无法让它工作.
REACT_APP_MY_API=https://something.com
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
console.log("%REACT_APP_MY_API%") // undefined
console.log("%NODE_ENV%") // development
</script>
Run Code Online (Sandbox Code Playgroud) 我有以下几点:
const RoutedApp = ({ signedIn }) => {
return (
<BrowserRouter>
<Switch>
<Route path={routes.HANDLE_SIGN_IN} render={props => <HandleSignIn {...props} />} />
<PublicRoute exact path={routes.LANDING} signedIn={signedIn} component={LandingContainer} />
<PrivateRoute exact path={routes.HOME} signedIn={signedIn} component={HomeContainer} />
<Route component={PageNotFoundContainer} />
</Switch>
</BrowserRouter>
);
};
Run Code Online (Sandbox Code Playgroud)
问题出在HandleSignInContainer.
该组件基本上只是让用户登录并将他们发送到主页location.push('/home');
但是,我遇到了HandleSignInContainer安装两次的问题。
该文档提到,在使用Routerender道具应该可以解决这个问题,但后来这个SO答案中提到,这将不是由HOC创建的组件工作。
既然HandleSignIn是用 React Redux's 包裹的connect(),我怎样才能阻止这个组件挂载两次?
尝试包装非连接组件:
const WrappedHandleSignInContainer = props => (
<div>
<HandleSignInContainer {...props} />
</div>
);
Run Code Online (Sandbox Code Playgroud)
我正在尝试<img>从 blob渲染一个。
import React from 'react';
import { getImageBlob } from '../api/images';
class ImageViewer extends React.Component {
state = {
src: undefined,
loading: true,
}
componentDidMount() {
getImageBlob()
.then((imageBlob) => {
console.log(imageBlob);
const urlCreator = window.URL || window.webkitURL;
const imageUrl = urlCreator.createObjectURL(imageBlob);
console.log(imageUrl);
this.setState({ src: imageUrl, loading: false });
})
.catch((err) => {
console.error(err);
this.setState({ loading: false });
});
}
render() {
if (this.state.loading) {
return 'loading';
}
return <img src={this.state.src} height={100} width={100} />;
}
}
export default …Run Code Online (Sandbox Code Playgroud) 新的React API包括useEffect(),其第二个参数采用Object哪个React差异来查看组件是否已更新。
例如
useEffect(
() => {
const subscription = props.source.subscribe();
return () => {
subscription.unsubscribe();
};
},
[props.source],
);
Run Code Online (Sandbox Code Playgroud)
[props.source]论点在哪里。
我的问题是:我可以定义一个自定义函数来运行以检查道具是否已更改吗?
我有一个自定义对象,React似乎无法告诉它何时已更改。
我正在尝试在 CircleCI 上为 Node.js 应用程序运行一个简单的构建:
version: 2.0
jobs:
build:
working_directory: ~/app
docker:
- image: gcr.io/google-appengine/nodejs
steps:
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: Install dependencies
command: yarn
- save_cache:
key: dependency-cache-{{ checksum "package.json" }}
paths:
- ./node_modules
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: ESLint
command: yarn lint
Run Code Online (Sandbox Code Playgroud)
...
"scripts": {
"lint": "./node_modules/eslint/bin/eslint.js . --ext .js --fix",
}
...
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
#!/bin/bash -eo pipefail
yarn lint
yarn run v1.16.0 …Run Code Online (Sandbox Code Playgroud) 我将React与Material UI库一起使用,并且具有以下组件层次结构:
<RootContainer>
<SnackBar />
<HomeContainer>
<LoginModal />
</HomeContainer>
</RootContainer>
Run Code Online (Sandbox Code Playgroud)
我的问题是,即使Snackbar的zIndex增加到,它也会显示在LoginModal的下面9999。
将Snackbar 放置在模态(或更确切地说,模态的背景)上的正确方法是什么?
我有ListViews一个TabBarView使用a的两个渲染TabController.
如何在每个之间保留状态(缺少更好的单词),ListView以便:1)小部件不重建,2)ListView在标签之间记住位置.
class AppState extends State<App> with SingleTickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = new TabController(
vsync: this,
length: _allPages.length,
);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
Widget _buildScaffold(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('headlines'),
bottom: new TabBar(
controller: _tabController,
isScrollable: true,
tabs: _allPages
.map((_Page page) => new Tab(text: page.country))
.toList()),
),
body: new TabBarView(
controller: _tabController, …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个简单的 Next.js 应用程序,它使用 Firebase 身份验证并从 Docker 容器运行。
以下在本地工作正常(从构建的 docker 容器运行)。但是,当我部署到 Heroku 或 Google Cloud Run 并访问该网站时,它会导致无限重新加载循环(页面只是冻结并最终耗尽内存。当作为来自 Google 的 Node.js 应用程序提供时,它工作正常应用引擎。
我认为错误出在 Dockerfile 中(我认为我的端口有问题)。Heroku 和 Google Cloud Run 随机化他们的process.env.PORT环境变量,如果有任何用处,并且EXPOSE据我所知忽略 Docker 的命令。
重新加载发生时,网络/控制台中不会显示任何错误。我认为这是由于 Next.js 8 的热模块重新加载造成的,但问题在 Next.js 7 上仍然存在。
相关文件如下。
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN yarn
# Copy source files.
COPY . .
# Build app.
RUN yarn build
# Run app.
CMD [ "yarn", "start" ]
Run Code Online (Sandbox Code Playgroud)
require(`dotenv`).config();
const express = require(`express`);
const …Run Code Online (Sandbox Code Playgroud) reactjs ×7
javascript ×5
node.js ×3
callback ×1
circleci ×1
dart ×1
docker ×1
flutter ×1
html ×1
material-ui ×1
python ×1
react-hooks ×1
react-router ×1