javascript - 如何为使用地图制作的单个元素设置样式
问题描述
我正在用 react-native 制作一个计算器应用程序。我正在创建带有地图功能的计算器按钮,但当然每个按钮看起来都一样,是否可以更改单个元素的样式,或者我应该更改按钮的创建方式。这是我的“示例”按钮
import React, {Component} from "react";
import { StyleSheet, Text , TouchableOpacity, } from "react-native";
export default class InputButton extends React.Component{
render() {
const{value,handleOnPress} = this.props;
return (
<TouchableOpacity
style={styles.container}
onPress={()=> handleOnPress(value)}>
<Text style={styles.text}>{value}</Text>
</TouchableOpacity>
);
} }
const styles = StyleSheet.create(
{
container:{
flex:1,
margin: 1,
backgroundColor: 'black',
justifyContent:"center",
alignItems: 'center'
},
text:{
fontSize: 30,
color: 'white',
fontWeight: 'bold'
}
});
这就是我在返回整个按钮布局的主要组件中的功能:
renderButtons = () =>{
console.log(SCREEN_WIDTH + " " + SCREEN_HEIGHT)
if(SCREEN_HEIGHT > SCREEN_WIDTH){
let layouts = buttons.map((buttonRows,index)=>{
let rowItem = buttonRows.map((buttonItems,buttonIndex)=>{
return <InputButton
value={buttonItems}
handleOnPress={handleInput.bind(buttonItems)}
key={'btn-'+ buttonIndex}/>
});
return <View style={styles.inputRow} key={'row-' + index}>{rowItem}</View>
});
return layouts
}
else
{
let layouts = buttons_landscape.map((buttonRows,index)=>{
let rowItem = buttonRows.map((buttonItems,buttonIndex)=>{
return <InputButton
value={buttonItems}
handleOnPress={handleInput.bind(buttonItems)}
key={'btn-'+ buttonIndex}/>
});
return <View style={styles.inputRow} key={'row-' + index}>{rowItem}</View>
});
return layouts
}
}
我正在使用这些数组来制作按钮布局:
const buttons = [
['AC','DEL'],
['7','8','9','/'],
['4','5','6','-'],
['1','2','3','*'],
['0','.','=',,'+']
];
const buttons_landscape = [
['DEL','x!','e','+/-','%','AC'],
['10^x','√','2','8','9','/'],
['log10','e^x','4','5','6','-'],
['x^2','ln','1','2','3','*'],
['x^3','π','0','.','=','+']
];
我的问题是如何改变创建按钮和布局的方式,以便每个单一的都具有独特的属性或改变单一按钮的样式
解决方案
例如,您可以替换
return <View style={styles.inputRow} key={'row-' + index}>{rowItem}</View>
沿着这些思路
return <View style={someFunction(buttonItems, buttonIndex)} key={'row-' + index}>{rowItem}</View>
在哪里someFunction
返回预期的样式(styles.inputRow
我猜默认为 )。
(此外,您的块是否与else
块几乎相同if
,唯一的区别是buttons
v. buttons_landscape
?如果它接受按钮作为参数会更好,而不是重复相同的 8 行代码)。
推荐阅读
- performance - 当边界检查被消除时 V8 TypedArray 性能悬崖?
- gams-math - 在GAMS中,变量和参数有什么区别?
- javascript - 为什么在设备中找不到 socket.io.js?
- android-studio - Android Studio 3.2.1 - NDK r10e 同步失败?
- java - Hibernate 的一级缓存不适用于布尔类型?
- python - 单行与多行的布尔比较
- ruby-on-rails - Neo4j.rb 和 Ruby On Rails 的最短加权路径
- web - 没有框架或网格的响应式设计
- java - Java 11 无法解析方法,如果它是一个错误?
- javascript - 切换到子组件时如何隐藏父组件