reactjs - 将数据从 Child 发送到 Parent React
问题描述
我已经细分了我的组件,我想使用子组件中的 deleteName 函数来更改文本的状态。但是,我onPress={this.props.delete(i)}
在我的子组件中使用了它不起作用。发生在我身上的错误是:
未定义的变量“I”
这是我的代码:
应用程序.js
export default class App extends Component {
state = {
placeName: '',
text: [],
}
changeName = (value) => {
this.setState({
placeName: value
})
}
deleteName = (index) => {
this.setState(prevState => {
return {
text: prevState.text.filter((place, i) => {
return i!== index
})
}
}
}
addText = () => {
if (this.state.placeName.trim === "") {
return;
} else {
this.setState(prevState => {
return {
text: prevState.text.concat(prevState.placeName)
};
})
}
}
render() {
return (
<View style={styles.container}>
<View style={styles.inputContainer}>
<Input changeName={this.changeName}
value={this.state.placeName} />
<Button title="Send" style={styles.inputButton}
onPress={this.addText} />
</View>
<ListItems text={this.state.text} delete={this.deleteName}/>
{/* <View style={styles.listContainer}>{Display}</View> */}
</View>
);
}
}
和子组件 ListItems.js
const ListItems = (props) => (
<View style={styles.listitems}>
<Text>{this.props.text.map((placeOutput, i) => {
return (
<TouchableWithoutFeedback
key={i}
onPress={this.props.delete(i)}>
onPress={this.props.delete}
<ListItems placeName={placeOutput}/>
</TouchableWithoutFeedback>
)
})}
</Text>
</View>
);
解决方案
而不是onPress={this.props.delete(i)}
,使用onPress={() => this.props.delete(i)}
推荐阅读
- java - Selenium - Chrome 中的拖放问题
- reactjs - 使用材质 UI 反应的嵌套网格容器和项目不适合屏幕
- java - JAVA PROGRAM:AVL 树字典输出问题
- c# - 如何在 c# 中使用 xmlns:soap12、xmlns:xsd 和 xmlns:xsi 在 c# 中以编程方式构建 xml?
- javascript - 如何将视图中的多个值导入模板中的多个按钮?
- html - PowerShell - 可点击的超链接
- sql - MS Access 中的 SQL 最大值
- firebase - Flutter - 使用 facebook 进行 Firebase 身份验证不会将用户信息保存到数据库中
- ruby-on-rails - 脚手架新的 Ruby on Rails 应用程序导致 spring 错误
- actions-on-google - 从“智能家居”改变动作类型