【发布时间】:2019-08-13 00:26:14
【问题描述】:
在导航选项上设置一个简单的文本输入后,我想有条件地呈现一个清除按钮。
static navigationOptions = ({ navigation }) => {
const q = navigation.getParam("q", "");
const onSearch = navigation.getParam("onSearch");
const onFocus = navigation.getParam("onFocus");
return {
headerStyle: {
backgroundColor: "#fff"
},
header: (
<View style={styles.searchContainer}>
<HeaderBackButton
tintColor="black"
onPress={() => navigation.navigate("Home")}
/>
<TextInput
underlineColorAndroid="transparent"
style={styles.inputContainer}
placeholder="Search"
value={q}
onChangeText={text => onSearch(text)}
onFocus={onFocus}
//clearButtonMode="always"
/>
{this.renderClearButton()}
</View>
)
};
};
所以这里是函数
renderClearButton() {
if (this.state.onSearchStatus == "touched") {
return (
<TouchableOpacity onPress={navigation.getParam("clearText")}>
<Image
style={styles.button}
source={require("../assets/icons/clear.png")}
/>
</TouchableOpacity>
);
} else {
return "";
}
}
但是会发生这种情况
TypeError: undefined is not a function (评估 '_this2.renderClearButton()')
我已经尝试过:
const renderClearButton = navigation.getParam("renderClearButton");
and {renderClearButton}
但是
现在的错误是函数作为反应子无效。这可能 如果你返回一个组件,就会发生这种情况
那么可以给navigationOptions添加一个函数吗?
【问题讨论】: