Кнопка не позиционируется в React Native

Моя кнопка, кажется, не расположена в моем родном проекте. Код, который у меня есть, выглядит так:

<Button style = "centered"
      onPress = {() => {Alert.alert('Button tapped!');} }
      title = "Confirm"
    />

Затем в моей таблице стилей я сделал это:

 centered:{
    position: 'absolute',
    top : 350,
}

И это не сработало. Некоторые другие вещи, которые я пробовал:

style = {centered}

Выдает ошибку времени выполнения, говорящую о том, что не удается найти переменную по центру

class = "centered"

Тоже ничего не делает.

Согласно предложению, я попытался создать отдельный вид только для своей кнопки, но он выдал ошибку, говорящую о том, что выражения JSX должны иметь один родительский элемент. Код, который я пробовал:

<View style = {styles.container}>
    <Text>Select a time to be notified : </Text>
    <Picker
      style = {styles.picker} itemStyle = {styles.pickerItem}
      selectedValue = {this.state.time}
      onValueChange = {(itemValue) => this.setState({time: itemValue})}
    >
    <Picker.Item label = "Now" value = "now" />
      <Picker.Item label = "After 1 minute" value = "1min" />
      <Picker.Item label = "After 5 minutes" value = "5min" />
      <Picker.Item label = "Custom time" value = "ctime" />
    </Picker>
  </View>
  <View>
    <Button style = {{marginTop:350}}
    onPress = {() => {Alert.alert('Button tapped!');} }
    title = "Confirm"
    />
  </View>
);

Таблица стилей:

const styles = StyleSheet.create({


 container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },

  picker :{
    width: 200,
    height: 44,
    backgroundColor: '#CCE6FF',
    borderColor: 'white',
    borderWidth: 1,
  },

  pickerItem :{
    width: 200,
    height: 88,
    backgroundColor: '#CCE6FF',
    borderColor: 'black',
    borderWidth: 1,
  },

  notificationButton :{
    position: 'absolute',
    top : 50,
  },
});

Вы должны сделать это, чтобы добавить стиль, вы можете просто сделать centered. facebook.github.io/react-native/docs/stylesheet.html

WilomGfx 30.05.2019 16:43

@WilomGfx Я не знаю, какую часть вы имеете в виду, но я сделал часть, в которой я создаю таблицу стилей. Я тоже пробовал style = {[styles.centered]}, тоже не получилось

Maggie Mao 30.05.2019 16:49

вам нужно сделать что-то вроде style = {{ marginTop: 34, color: 'blue'}}

Junius L. 30.05.2019 16:50

@ЮниусЛ. Я тоже это пробовал. Итак, сейчас у меня есть `<Button style = {{marginTop:350}}`... Все еще не работает

Maggie Mao 30.05.2019 17:11
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
4
33
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно изменить свойства:

<Button style  = {styles.centered}
      onPress = {() => {Alert.alert('Button tapped!');} }
      title = "Confirm"
    />

и стиль:

const styles = StyleSheet.create({
  centered:{
  position: 'absolute',
  top : 350,
  }
})

Я сделал все, кроме замены {[styles.centered]} на {{styles.centered}}. Пока это все еще не работает. Когда я изменил его на фигурные скобки, он выдал ошибку компиляции, в которой говорилось, что запятая ожидается. Я уже не понимаю, что происходит ;-;

Maggie Mao 30.05.2019 17:05

Извините за ошибку, это должно быть {styles.centered}, я редактирую ответ

Idan 31.05.2019 01:32

Спасибо! Мой вопрос уже решен, но все же ценю ваш ответ!

Maggie Mao 31.05.2019 03:43
Ответ принят как подходящий

Добавьте кнопку в View и стилизуйте этот вид, чтобы центрировать кнопку, используя alignItems и justifyContent.

<View>
  <View style = {styles.container}>
    <Text>Select a time to be notified : </Text>
    <Picker
      style = {styles.picker}
      itemStyle = {styles.pickerItem}
      selectedValue = {this.state.time}
      onValueChange = {itemValue => this.setState({ time: itemValue })}>
      <Picker.Item label = "Now" value = "now" />
      <Picker.Item label = "After 1 minute" value = "1min" />
      <Picker.Item label = "After 5 minutes" value = "5min" />
      <Picker.Item label = "Custom time" value = "ctime" />
    </Picker>
  </View>
  <View style = {styles.confirmButton}>
    <Button
      style = {{ marginTop: 350 }}
      onPress = {() => {
        Alert.alert('Button tapped!');
      }}
      title = "Confirm"
    />
  </View>
</View>

Стиль контейнера кнопки

confirmButton: {
  justifyContent: 'center',
  alignItems: 'center',
  marginTop: 10,
}

Кнопка, которую я пытаюсь стилизовать, уже находится в представлении, и когда я попытался создать другое представление, это выдало еще одну ошибку компиляции, я полагаю, у нас может быть только один элемент представления во всем этом?

Maggie Mao 30.05.2019 17:10

«Выражения JSX должны иметь один родительский элемент» в строке, где я закрываю скобки для своего возврата

Maggie Mao 30.05.2019 17:14

Сделанный. Он прикреплен в конце

Maggie Mao 30.05.2019 17:19

добавить стиль в представление

Junius L. 30.05.2019 17:24

Сделано также. Я попытался также закомментировать justifyContent и alignItems, и все, что он сделал, это переместил все в верхний левый угол, и я все еще не мог свободно перемещать свою кнопку.

Maggie Mao 30.05.2019 17:29

Таблица стилей, содержащая информацию о представлении, также прилагается к вопросу. Я изменил имя класса наnotificationButton в целях стилизации.

Maggie Mao 30.05.2019 17:31

см. мой обновленный ответ, если у вас есть два элемента в операторе возврата, оберните их в представление, поэтому он выдавал вам эту ошибку.

Junius L. 30.05.2019 17:41

Если вы хотите расположить кнопку только по центру экрана, оберните ее View, как указано в Юниус.

Глядя на ваш отредактированный вопрос с прикрепленным кодом. Вы можете вернуть только один элемент из метода render. Итак, вам нужно обернуть эти 2 View в одного родителя View

Другие вопросы по теме