亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

React Native,從另一個屏幕編輯數據

React Native,從另一個屏幕編輯數據

qq_笑_17 2023-04-20 16:39:40
我制作了 2 個屏幕,一個主屏幕和第二個編輯屏幕我需要從編輯屏幕編輯主屏幕的數據并保存它,并且該數據也應該在主屏幕和詳細信息屏幕中更新。沒有 redux 或上下文我怎么能做到這一點。誰能告訴我。首頁.jsclass Home extends Component {  state = {    post: [      {        key: "1",        title: "A Good Boi",        des: "He's a good boi and every one know it.",        image: require("../assets/dog.jpg"),      },    ],  };  render() {    return (        <FlatList          data={this.state.post}          renderItem={({ item }) => (            <>              <TouchableOpacity                activeOpacity={0.7}                onPress={() => this.props.navigation.navigate("Edit", item)}                style={styles.Edit}              >                <MaterialCommunityIcons                  name="playlist-edit"                  color="green"                  size={35}                />              </TouchableOpacity>              <Card                title={item.title}                subTitle={item.des}                image={item.image}                onPress={() => this.props.navigation.navigate("Details", item)}              />            </>          )}        />編輯.jsclass ListDetails extends Component {  render() {    const listing = this.props.route.params;    return (      <View>        <Image style={styles.image} source={listing.image} />        <View style={styles.detailContainer}>          <AppTextInput value={listing.title} />          <AppTextInput value={listing.des} />        </View>        <AppButton          text="Save"          onPress={() => this.props.navigation.goBack("Home")}        />      </View>細節.js const listing = this.props.route.params;    return (      <View>        <Image style={styles.image} source={listing.image} />        <View style={styles.detailContainer}>          <Text style={styles.title}>{listing.title}</Text>          <Text style={styles.des}>{listing.des}</Text>        </View>      </View>    );
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

您可以將主屏幕中的函數傳遞給編輯屏幕中的setState 。如果導航到編輯屏幕導致主屏幕卸載,您可以將導航方法更改為堆棧導航器的推送(我還沒有測試過)?,F在的代碼應該是這樣的:


主屏幕.js:


onEdit=(data)=>{

  setState(...);

}

...

<TouchableOpacity

  activeOpacity={0.7}

  onPress={() => this.props.navigation.navigate("Edit", {item, onEdit})} //use push instead if error occured

  style={styles.Edit}

>

...

編輯.js


class ListDetails extends Component {

  render() {

    const {item:listing, onEdit} = this.props.route.params;

    return (

      <View>

        <Image style={styles.image} source={listing.image} />

        <View style={styles.detailContainer}>

          <AppTextInput value={listing.title} />

          <AppTextInput value={listing.des} />

        </View>

        <AppButton

          text="Save"

          onPress={() => { onEdit(...); this.props.navigation.goBack("Home");}}

        />

      </View>


查看完整回答
反對 回復 2023-04-20
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號