gpt4 book ai didi

react-native - React Native - 按下按钮时将元素动态添加到 DOM

转载 作者:行者123 更新时间:2023-12-03 14:43:03 26 4
gpt4 key购买 nike

在 native react 中,我试图通过单击按钮将元素动态添加到 DOM。

这是我到目前为止在 Render() 方法中的内容:

<TouchableHighlight  
style={styles.button}
onPress={this.addAnotherRow}>

<Text>Add new row</Text>

</TouchableHighlight>

我不确定从 onpress 函数返回什么来添加另一个 DOM 元素:
addAnotherRow() {
return <Text>New Row</Text>
}

请问有什么帮助吗?

最佳答案

一个很好的方法是设置一个数组,然后在 View 中通过该数组进行映射。要添加元素,请将项目推送到数组并重置数组的状态:

getInitialState(){
return { rows: [] }
},

_addRow(){
this.state.rows.push(index++)
this.setState({ rows: this.state.rows })
}

let rows = this.state.rows.map((r, i) => {
return <View key={ i } style={[styles.row, CheckIndex(i)]}>
<Text >Row { r }, Index { i }</Text>
</View>
})

并像这样使用变量:
<View>
{ rows }
</View>

我已经建立了一个工作示例 here ,并粘贴下面的代码。

https://rnplay.org/apps/-ENWEw
'use strict';

var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
TouchableHighlight
} = React;

let index = 0

var SampleApp = React.createClass({

getInitialState(){
return { rows: [] }
},

_addRow(){
this.state.rows.push(index++)
this.setState({ rows: this.state.rows })
},

render() {

let CheckIndex = i => {
if((i % 2) == 0) {
return styles.gray
}
}

let rows = this.state.rows.map((r, i) => {
return <View key={ i } style={[styles.row, CheckIndex(i)]}>
<Text >Row { r }, Index { i }</Text>
</View>
})

return (
<View style={styles.container}>
<TouchableHighlight onPress={ this._addRow } style={styles.button}>
<Text>Add new row</Text>
</TouchableHighlight>
{ rows }
</View>
);
}
});

var styles = StyleSheet.create({
container: {
flex: 1,
marginTop: 60,
},
gray: {
backgroundColor: '#efefef'
},
row: {
height:40,
alignItems: 'center',
justifyContent: 'center',
borderBottomColor: '#ededed',
borderBottomWidth: 1
},
button: {
alignItems: 'center',
justifyContent: 'center',
height:55,
backgroundColor: '#ededed',
marginBottom:10
}
});

AppRegistry.registerComponent('SampleApp', () => SampleApp);

关于react-native - React Native - 按下按钮时将元素动态添加到 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com