我开始学习React Native,对于我的项目,我创建了一个简单的Button组件,可以在我的项目中重用.我根据变量'disabled'动态设置不透明度值,但是,按钮的外观不会随着opacity变量的值而变化.我四处搜索,我没有找到解释..
任何帮助将不胜感激.
这是我的源代码:
import React from 'react'
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native'
import PropTypes from 'prop-types'
//TODO: arrumar o problema com a opacidade
export default function Button({text, onPress, style, disabled, textStyle}) {
let opacity = disabled === true ? 0.5 : 1
// console.log('opacity', opacity)
return (
<TouchableOpacity onPress={onPress} style={[defaultStyles.button, style, {opacity: opacity}]}
disabled={disabled}>
<Text style={[defaultStyles.text, textStyle]}>{text}</Text>
</TouchableOpacity>
)
}
const defaultStyles = StyleSheet.create({
text: {
color: 'white'
},
button: {
backgroundColor: 'black',
margin: 15, …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用 Detox 来测试我的 React Native 应用程序,但在测试 Pickers 时遇到了一些麻烦。我基本上需要能够从选择器中选择一个值!但这似乎不可能!
这是我的选择器:
<Picker
style={styles.picker}
itemStyle={styles.pickerItem}
testID="picker"
selectedValue={selectedValue}
onValueChange={this.updateValue}
>
<Picker.Item key={0} label="Choose one" value={null} />
{values.map(value => {
return (
<Picker.Item
key={value}
label={value}
value={value}
testID={value}
/>
);
})}
</Picker>
Run Code Online (Sandbox Code Playgroud)
这是我的测试:
await element(by.type("UIPickerView")).setColumnToValue(0, "Apple");
Run Code Online (Sandbox Code Playgroud)
但我得到的只是一条错误消息,指出无法设置该值,因为它不存在,但它确实存在!因为我现在正在看它!
有谁知道在选择器中设置值的正确方法?
任何帮助都会很棒!
我正在为我的 Flutter 应用程序编写单元测试,但在读取 json 文件时遇到一些问题。我有一些 json 文件供我的 api 模拟类使用。每当我调用 File 对象上的方法时,它永远不会结束,但测试会继续执行,并以错误结束,因为它没有从文件对象接收数据。这很奇怪,因为只有当从小部件调用的提供程序调用模拟 api 方法时才会发生这种情况。如果我直接调用模拟 api 方法进行测试,则效果很好。\n我的应用程序的结构如下:WidgetScreen调用->提供商调用->mockApi。
\n\nWidget LegislacaoScreen 从我的提供者调用方法 carregarLegislacao,该方法又从我的 mockApi 调用方法 getLegislacaoes,该方法从 json 文件读取并将结果返回给提供者,然后通知我的小部件。任何帮助表示赞赏。
\n\n哦,我正在使用以下命令运行测试:flutter test test/my_test.dart
\n\n这里有一些代码:
\n\nLegislacaoScreen:
\n\nclass LegislacaoScreen extends StatefulWidget {\n @override\n _LegislacaoScreenState createState() => _LegislacaoScreenState();\n}\n\nclass _LegislacaoScreenState extends State<LegislacaoScreen>\n with AutomaticKeepAliveClientMixin {\n @override\n void initState() {\n super.initState();\n Future.microtask(carregarDados);\n }\n\n @override\n bool get wantKeepAlive => true;\n\n Future<void> carregarDados({bool reset = false}) async {\n try {\n final legislacaoProvider =\n Provider.of<LegislacaoProvider>(context, listen: false);\n\n await legislacaoProvider.carregarLegislacao(\n …Run Code Online (Sandbox Code Playgroud) 在 React 18 Strict 模式下,useEffect 运行两次,因此在没有解决方法的情况下在 useEffect 中获取数据并不好。我观看了一些视频,阅读了一些文章,说我们不应该在这个钩子中获取数据,但是我还没有看到有关如何正确执行此操作的实际示例。这就是我在 React 17 上的做法:
{
itens: [],
loading: false,
error: null,
async fetchItens(page: number) {
try {
set({
loading: true,
error: null
});
const { data } = await axios.get(`my-url`);
set({
loading: false,
itens: data,
})
} catch(err) {
set({
error: "There was an error.",
loading: false,
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的组件中,我这样称呼它:
function MyComponent() {
const itens = useStore(state => state.itens);
const loading = useStore(state => state.loading);
const error = …Run Code Online (Sandbox Code Playgroud) 我开始使用 React Native 进行开发,目前正在构建我的第一个应用程序。我收到了一些 Zepplin 文件,告诉我每个屏幕必须是怎样的(包括一些 android xml 格式的代码),包括字体大小和间距,问题是,它在 DP 中,有时是 SP ..它没有告诉我像素密度或其他任何东西,所以我不能在我的应用程序中使用相同的数字。在这种情况下我该怎么办?在制作 React Native 应用程序时,你们如何处理不同的单位?
这是我必须更改以响应本机代码的代码示例:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18.7sp"
android:fontFamily="sans-serif-medium"
android:textStyle="normal"
android:textColor="#ffffff"
android:lineSpacingExtra="-18.7sp"
tools:text="60"
/>
Run Code Online (Sandbox Code Playgroud)
和:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32sp"
android:fontFamily="sans-serif-medium"
android:textStyle="normal"
android:textColor="#70c300"
android:lineSpacingExtra="-32sp"
tools:text="20"
/>
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏
我正在使用 react native 和 Expo 开发一个应用程序,但我在 Android 上遇到了键盘问题。当键盘弹出时,它会将视图向上推太多,导致标题在中间被切掉。在iOS上没问题。我想实现相同的行为..
我查看了文档,但它说 Android 会自动处理它。但它没有这样做:/
这是我的代码:
render() {
const { erroLogin, logando } = this.props;
return (
<ImageBackground style={styles.container} source={backgroundImage}>
<KeyboardAvoidingView
style={styles.keyboardViewContainer}
behavior={Platform.OS === 'ios' ? 'padding' : null}
>
<Text
style={{
fontFamily: 'roboto-bold',
color: '#ffffff',
fontSize: 48,
marginBottom: 20.7 * 3,
}}
>
Balad<Text style={{ fontFamily: 'roboto-light', color: '#ffffff', fontSize: 48 }}>APP</Text>
</Text>
<TextInput
value={this.state.email}
placeholder="Usuário"
style={[styles.input, { marginBottom: 4 * 3 }]}
placeholderTextColor="#828282"
maxLength={255}
autoCorrect={false}
keyboardType="email-address"
autoCapitalize="none"
returnKeyType="done"
underlineColorAndroid="transparent"
onChangeText={text => this.setState({ …Run Code Online (Sandbox Code Playgroud) react-native ×5
reactjs ×2
dart ×1
dart-io ×1
detox ×1
expo ×1
flutter ×1
flutter-test ×1
font-size ×1
javascript ×1
keyboard ×1
opacity ×1
react-18 ×1
styles ×1