如何在react-native-camera顶部添加一个掩码?
我正在使用react-native-camera为React Native QRCode扫描仪应用程序构建UI.
相机顶部的覆盖遮罩应为浅灰色,但中间部分必须保持透明(透视).
但是当我在外面罩上更改backgroundColor时,它似乎也会影响中心部分.我的意思是,当然,它背后是儿童观.
下面的代码是快照的简化版本.
<Camera
ref={cam => {
this.camera = cam;
}}
onBarCodeRead={this._onBarCodeRead}
style={styles.cameraView}
aspect={Camera.constants.Aspect.fill}
playSoundOnCapture
>
<View
style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
backgroundColor: 'rgba(0.2, 0.2, 0.2, 0.2)',
alignItems: 'center',
justifyContent: 'space-around',
}}
>
<View
style={{
width: 300,
height: 300,
backgroundColor: 'transparent',
borderColor: 'white',
borderWidth: 1,
}}
/>
</View>
</Camera>
Run Code Online (Sandbox Code Playgroud)
知道怎么做到这一点?
根据我的观察,Alert
对话框似乎建立在React Native应用程序之上.因此每次调用它时都会弹出,而不是在render
函数中.
问题是它不是异步任务,因此Alert
无论回调函数如何,后面的代码都将继续执行.
下面的代码演示了一个Alert
对话框不断弹出的情况,因为它一遍又一遍地读取相同的条形码.
(它是用TypeScript编写的.只要听从我的话,这是一个有效的片段.)
import * as React from "react";
import Camera from "react-native-camera";
import { Alert } from "react-native";
export default class BarcodeScanSreen extends React.Component<any ,any> {
private _camera;
private _onBarCodeRead = e => {
if (e.type === "QR_CODE") {
Alert.alert(
"QRCode detected",
"Do you like to run the QRCode?",
[
{ text: "No", onPress: this._onNoPress },
{ text: "Yes", onPress: this._onYesPress }
],
{ cancelable: false }
);
} …
Run Code Online (Sandbox Code Playgroud) 我知道这个问题已经讨论了很多次,我想我有一个基本的想法.我从StackOverflow找到了一些最受好评的答案:
但是对我来说,所有答案似乎都很模糊.
我们来看下面的例子:
const user = {
name: "James",
age: 33,
highlights: {
career: "Basketball player",
NBAChampion: [2012, 2013, 2016],
},
promotion: () => ("Get LeBron15 now!"),
};
const james = user;
const clone = { ...user };
const clone2 = Object.assign({}, user);
const clone3 = JSON.parse(JSON.stringify(user));
const clone4 = {
...user,
highlights: {
...user.highlights,
// I comment the it out, so now NBAChampion is a reference rather than copy!
// NBAChampion: [...user.highlights.NBAChampion]
}
};
user.age++;
user.highlights.career = …
Run Code Online (Sandbox Code Playgroud)在Visual Studio Code中自动格式化JavaScript和TypeScript代码时,我有一些关于破坏分配速记的问题。我得到这样的结果:
var {
check,
validationResult
} = require("express-validator/check");
Run Code Online (Sandbox Code Playgroud)
但我需要它看起来像这样:
var { check, validationResult } = require("express-validator/check");
Run Code Online (Sandbox Code Playgroud)
我已经安装了Beautify,并且在我的设置中:
{
"editor.wordWrapColumn": 160,
"typescript.format.placeOpenBraceOnNewLineForFunctions": false,
"typescript.format.placeOpenBraceOnNewLineForControlBlocks": false,
"javascript.format.placeOpenBraceOnNewLineForFunctions": false,
"javascript.format.placeOpenBraceOnNewLineForControlBlocks": false
}
Run Code Online (Sandbox Code Playgroud)
我找不到其他地方可以将新行设置为false。知道如何设置正确吗?
在官方的AsyncStorage示例中:https ://facebook.github.io/react-native/docs/signed-apk-android.html
每个键值都有一个@myAppStore:
前缀。
await AsyncStorage.setItem('@myAppStore:key', '{ "data": [...] }');
但是,在“ 在React Native中保存敏感数据”中,似乎Android和iOS都有它们的沙箱,因此数据是(某种)安全的。
@myAppStore:
前缀是否定义范围(例如,像在NoSQL中创建新集合一样),还是仅是命名约定?
我从客户端收到了一个有效的JSON字符串,它包含一个整数值数组:
declare @JSON nvarchar(max) = N'{"Comments": "test", "Markets": [3, 151]}'
Run Code Online (Sandbox Code Playgroud)
如何正确选择市场ID?
如果我使用这样的查询:select * from openjson(@JSON) j
它会返回
Markets的类型是4,这意味着一个对象,
但下面的查询返回null值:
select j.Markets from openjson(@JSON) with(Markets nvarchar(max)) j
我的目标是Market
根据这些ID 更新表格,例如:
update Market set Active = 1 where MarketID in (3, 151)
有没有办法做到这一点?
可以使用与SQL Server 2016兼容的任何内置函数.
注意:
感谢@johnlbevan
SELECT VALUE FROM OPENJSON(@JSON, '$.Markets')
完美地解决了这个问题.
为了完整性,这里是我如何"Markets": [3, 151]
从SQL服务器创建JSON整数数组().
由于array_agg
2016年没有开箱即用功能,我这样做了:
SELECT (
JSON_QUERY('[' + STUFF(( SELECT ',' + CAST(MarketID AS VARCHAR)
FROM Market
FOR XML PATH('')),1,1,'') + ']' …
Run Code Online (Sandbox Code Playgroud) react-native ×3
javascript ×2
android ×1
css ×1
ecmascript-6 ×1
ios ×1
json ×1
reactjs ×1
sql-server ×1
t-sql ×1
typescript ×1