2016-08-23 3 views
1

Я пытаюсь настроить событие изменения, если кто-то изменяет компонент коммутатора. Подход состоит в том, чтобы спроектировать представление, содержащее несколько коммутаторов, и позволяет пользователю устанавливать состояние для каждого уведомления, которое будет завершено в api-вызове POST. Дальше, я хотел бы загрузить начальные значения из api-call.ReactNative/Switch Component: onValueChange

Как я могу получить доступ к состоянию (погода проверена/снята) в моей функции onChangeFunction? И как я могу получить элемент, используя их ID или имя? ? (Так же, как и в HTML/CSS с # mySwitch.setValue (правда)

Данный код:

class Settings extends Component {  
    onChangeFunction(type, props) { 
     Alert.alert("changed", "==> " + props.state) 
    }  

    render() { 
     return (
      <View style={styles.container}> 
       <Switch onValueChange={this.onChangeFunction.bind(this, "TASK_CREATED", this.props)} value={this.state} /> 
      </View> 
     ); 
    } 
} 

ответ

3

У вас есть беспорядок там между props и state концепции Вы можете сделать:.

class Settings extends Component { 

    state = { 
     taskCreated: false, 
    }; 

    onChangeFunction(newState) { 
     this.setState(newState,() => Alert.alert("Changed", "==> " + this.state)); 
    } 

    render() { 
     return (
     <View style={styles.container}> 
      <Switch onValueChange={(value) => this.onChangeFunction({taskCreated: value})} 
        value={this.state.taskCreated} 
      /> 
     </View> 
    ); 
    } 
} 

Обратите внимание, что this.setState является асинхронным, так что вы можете спокойно прочитать его значение, используя функцию обратного вызова, что метод обеспечивает.

+0

Спасибо за вашу обратную связь. Как ч n Я получаю доступ к имени коммутатора и его новое значение в onChangeFunction? Я хочу построить этот метод в целом, поэтому я могу сделать вызов отдыха следующим образом:/api/updatePush? Type = taskCreated & value = ON | OFF? – sullivan

+0

' this.switch = s} ... />', а затем 'this.switch' – stereodenis

+0

Ну, как вы можете видеть, когда мы вызываем' this.onChangeFunction', мы передаем '{ taskCreated: value} 'so ... эта переменная, которую я назвал' '' 'NewState''', будет объектом, который содержит ключ' taskCreated' и его 'значение', который вы хотите для своего вызова api. Если вам становится легче, вы также можете: '' 'onValueChange = {(value) => this.onChangeFunction ('taskCreated', value)}' ''. –

Смежные вопросы