Я обнаружил, что response native может расширять родительский класс и переопределять некоторые функции. Я хочу знать, возможно ли это или есть другой способ сделать это.
export default class AppTextInput extends TextInput {
constructor(props){
super(props);
}
//here is some code I want to do
style(value){
var fontSize = value.fontSize;
//change fontSize
fontSize = fontSize*2;
value.fontSize = fontSize;
//call parent set style function
}
}
В ActionScript 3 я мог бы сделать вот так
//do something when visible was set
override public function set visible(value:Boolean):void
{
}
РЕДАКТИРОВАТЬ
hasTriggleFontSizeChange = false;
realFontSize = 12;
componentWillMount() {
var tempStyle = this.props.style;
if (!this.hasTriggleFontSizeChange) {
this.hasTriggleFontSizeChange = true;
var tempFontSize = 6;
if (tempStyle.hasOwnProperty('fontSize')) {
tempFontSize = tempStyle['fontSize'];
}
tempFontSize = 12;
var style = {fontSize: tempFontSize};
let styles = this.props.style;
//this line can change styles fontSize Value
styles = {...styles, fontSize: tempFontSize};
//but this line can't change styles fontSize Value
this.props.style = styles//{...this.props.style, fontSize: tempFontSize};
}
}
Вы должны использовать не наследование, а композицию. Если вы хотите иметь собственный TextInput, вот пример того, как вы могли бы этого добиться:
import React, { Component } from 'react';
import { TextInput } from 'react-native';
export default class CustomTextInput extends Component {
state = {}
render() {
const { props } = this;
const style = { fontSize: props.fontSize || 14 }
return (
<View style = {myStyle}>
<TextInput
style = {style}
placeholder = {props.placeholder}
underlineColorAndroid = "transparent"
value = {props.value}
placeholderTextColor = {props.placeholderTextColor ? props.placeholderTextColor : colors.lightGray}
/>
</View >
);
}
}
Я следил за вашим кодом и не могу изменить стиль в моем заданном коде стиля. Не могли бы вы увидеть часть редактирования? Я думаю, что, может быть, я не могу установить такой стиль напрямую.
Но где я могу изменить размер шрифта, когда стиль был установлен? Я отредактировал вопрос.