我想我知道答案,但只是为了确保:
我希望this.setState()在Redux状态更改为某个条件(例如state.dataLoaded === true)时调用React组件.我应该以某种方式使用subscribe,或者是太低级别我应该使用connect将状态映射到道具?在这种情况下,我认为这样的事情是可以接受的:
componentWillReceiveProps(nextProps) {
if (nextProps.dataLoaded) {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(nextProps.posts)
});
}
}
Run Code Online (Sandbox Code Playgroud) 假设有一个我无法控制的界面:
interface Original {
name: string;
size: number;
link: SomeType;
}
Run Code Online (Sandbox Code Playgroud)
我想扩展这个接口,但实际上删除 link所以我最终得到一个有效的新接口:
interface OriginalLite {
name: string;
size: number;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我对如何构建我的 React/GraphQL (Apollo) 应用程序感到有点困惑,因为在用户验证/登录之前不应建立连接。
目前我有这个:
class App extends Component {
render() {
return (
<ApolloProvider client={client}>
<Provider store={store}>
<Router>
<div>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/login">Log In</Link></li>
<li><Link to="/signup">Sign Up</Link></li>
</ul>
<AuthenticatedRoute exact path="/" component={HomePage} />
<Route path="/login" component={LoginPage} />
<Route path="/signup" component={SignupPage} />
</div>
</Router>
</Provider>
</ApolloProvider>
);
}
}
Run Code Online (Sandbox Code Playgroud)
这是网络接口的创建:
const networkInterface = createNetworkInterface({
uri: process.env.NODE_ENV === 'development'
? 'http://localhost:3000/graphql'
: 'TBD',
});
networkInterface.use([
{
applyMiddleware(req, next) {
if (!req.options.headers) {
req.options.headers = {}; // Create the header object …Run Code Online (Sandbox Code Playgroud) 我希望能够跟踪 S3 文件上传的进度(上传的字节数占总字节数)。
在任何人将此标记为受骗之前 - 事实并非如此。我在 StackOverflow 上看到的所有其他答案实际上都是不正确的。如果你做这样的事情:
s3
.putObject(
{
Bucket: 'xyz',
Key: 'wow.png',
Body: data,
},
(err, data) => {
console.log('done', err, data);
}
)
.on('httpUploadProgress', progress => {
console.log('Progress:', progress);
});
Run Code Online (Sandbox Code Playgroud)
您将获得一个进度更新,显示总大小:
Progress { loaded: 1082019, total: 1082019 }
Run Code Online (Sandbox Code Playgroud)
这没有用。我正在寻找的是更细粒度的上传进度报告,就像您在上传过程中通常看到的一样(无论文件大小.. 1MB 或 100MB):
100% 中的 0% 100% 中的
3% 100% 中的
7% 100% 中的
9%
(等等)
我有一个我正在存储的变量,它将决定从查询中排除哪些字段:
excludeFields = {
Contact: {
Address: 0,
Phone: 0
}
}
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为可与Mongo一起使用的点符号findOne,例如:
things.findOne({}, {fields: {'Contact.Address': 0, 'Contact.Phone': 0}})
Run Code Online (Sandbox Code Playgroud)
只是传递excludeFields不起作用并导致错误,"投影值应为1,0,true或false之一"
things.findOne({}, {fields: excludeFields})
Run Code Online (Sandbox Code Playgroud)
我是否必须编写自己的函数来从层次结构转换为平点符号?或者是否有一些机制在JavaScript中执行此操作,我不知道?
如果,在React中,我可以使用connect映射状态和调度到道具,并且connect当Redux状态(以及因此道具)改变时,我使用的组件将自动渲染,为什么我需要使用subscribe?
替代标题:"为什么这么多流行的JavaScript库使用伪经典继承而不是功能继承(工厂函数)?"
JavaScript:Good Parts建议使用工厂功能,以便您获得真正的方法和属性隐私.这是有道理的,所以我想知道为什么这么多现代JS库仍然使用伪造的经典继承(使用new关键字).与工厂功能相比,这条路线有一些技术优势吗?如果没有,它只是一种风格选择吗?
编辑:这不是一个基于意见的帖子.我不是问哪个更好,我问的是伪古典继承有哪些技术优势超过功能,以了解为什么有人会选择那种风格.
编辑2:伪古典的几个优点我可以看到:
console.log是原型的实例时,它会显示它所实例化的对象的名称.instanceof查看实例是否来自特定对象,这是工厂函数无法实现的.我对 DynamoDB 中的某些东西感到非常困惑:
对于表中的任何项目,如果项目中存在索引排序键值,DynamoDB 只会写入相应的索引条目。如果排序键没有出现在每个表项中,则称该索引为稀疏索引。
[...]
要跟踪未结订单,您可以在 CustomerId(分区键)和 IsOpen(排序键)上创建索引。只有表中定义了 IsOpen 的订单才会出现在索引中。
但是,如果您使用备用排序键定义了 LSI,则在创建新项目时,备用排序键永远不能为空。因此,索引根本不是稀疏的,因为我创建的每个项目都会在索引中结束。
我错过了什么?
我尽可能详细地提出这个问题,以便遇到相同问题的其他人都将拥有全面的资源来解决这个问题并使其发挥作用。
目标是使用签名 cookie,以便我的应用程序中经过身份验证的用户可以自由访问他们的任何文件,而无需签署 URL。
我很确定其中大部分都是正确的,但为了提供完整的图片,我将包括我所拥有的设置。
我有一个桶,我们可以打电话my-storage。它具有以下 CORS 配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
桶策略是:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity xxx"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-storage/*"
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-storage/*",
"Condition": {
"StringLike": {
"aws:Referer": "http://localhost:8080/*"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
本地主机异常只是为了让我可以在本地构建/测试我的应用程序,因为 HTTP cookie 由于跨域问题而无法正常工作。
我有一个使用此存储桶作为源的 CloudFront 发行版。在本文中,我们将称 …
cookies httpcookie amazon-web-services cors amazon-cloudfront
我已遵循几乎每个网站上详细说明的说明:
ios/Runner/Info.plistCFBundleName键并将其值更改为应用程序名称。flutter clean && dart pub get无论我做什么,该应用程序仍然被称为“MyApp Mobile”,而不仅仅是“MyApp”。安卓改名没有问题。为什么这不起作用?
(颤振3.0.5,达特2.17.6)
javascript ×3
reactjs ×3
redux ×2
amazon-s3 ×1
apollo ×1
cookies ×1
cors ×1
flutter ×1
graphql ×1
httpcookie ×1
indexing ×1
inheritance ×1
mongodb ×1
prototype ×1
react-apollo ×1
typescript ×1