функция не является функцией - реагировать-родной - PullRequest
0 голосов
/ 25 апреля 2018

В моем проекте я использовал стековый навигатор в качестве навигатора.Внутри navigationOptions, в headerRight, я использовал пользовательскую кнопку.Когда я пытаюсь вызвать onPress, он говорит, что функция не является функцией.

это функция

  sharePost() {
    // this.props.doShare();
    console.log("DONE");
  }

Я поместил полный код здесь.Я хочу использовать функцию sharePost внутри rightHeader для navigationOptions.

     import React, { Component } from "react";
import Icon from "react-native-vector-icons/MaterialCommunityIcons";
import {
  View,
  Text,
  Image,
  TouchableOpacity,
  Animated,
  ScrollView,
  StyleSheet,
  Dimensions
} from "react-native";

import { PostProfileBar, WritePost } from "../../components";
import { ButtonWithoutBackground } from "../../mixing/UI";

const width = Dimensions.get("window").width;
const height = Dimensions.get("window").height / 3;

class SharePostScreen extends Component {
  constructor(props) {
    super(props);

  sharePost() {
    // this.props.doShare();
    console.log("DONE");
  }

  render() {
    return (
      <View style={styles.container}>
        <ScrollView>
          <WritePost profile={this.state.loggedUserProfile} />

          <View style={styles.sharePostWrapper}>
            <PostProfileBar profile={this.state.postedUserProfile} />

            <Image
              source={{
                uri: "https://pbs.twimg.com/media/DWvRLbBVoAA4CCM.jpg"
              }}
              resizeMode={"stretch"}
              style={styles.image}
            />
          </View>
        </ScrollView>
      </View>
    );
  }

  static navigationOptions = ({ navigation }) => ({
    headerTitle: "Share To Feed",
    headerTitleStyle: {
      paddingLeft: "20%",
      paddingRight: "20%"
    },
    headerStyle: {
      paddingRight: 10,
      paddingLeft: 10
    },
    headerLeft: (
      <Icon
        name={"close"}
        size={30}
        onPress={() => {
          navigation.goBack();
        }}
      />
    ),
    headerRight: (
      <ButtonWithoutBackground
        buttonText={styles.buttonText}
        onPress={this.sharePost()}
      >
        Post
      </ButtonWithoutBackground>
    )
  });
}

1 Ответ

0 голосов
/ 25 апреля 2018

Чтобы вызвать class level methods внутри static метода navigationOptions, вы можете сделать следующее:

// Bind function using setParams

componentDidMount() {
  const { navigation } = this.props;
  navigation.setParams({
    referencedSharePost: this.sharePost,
  });
}

sharePost = (parameters) => {
    // this.props.doShare();
    console.log("DONE" + parameters);
  }

static navigationOptions = ({ navigation }) => {
  const { params = {} } = navigation.state;
  return {
     //... Other Options
     headerRight: (
      <ButtonWithoutBackground
        buttonText={styles.buttonText}
        onPress={() => params.referencedSharePost("I'm passing something")}
      >
        Post
      </ButtonWithoutBackground>
    )
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...