Из документации onValueChange возвращает значение и индекс в его заднюю часть. https://facebook.github.io/react-native/docs/picker
onValueChange={(itemValue, itemIndex) => {
//do something here
}
Если вы хотите получить ключ, значение и метку, вы должны найти их в данные, которые вы предоставляете сборщику. Вы должны быть в состоянии использовать индекс с этим.
Несмотря на то, что вы включаете начальный элемент выбора, который не включен в ваши данные, вам, возможно, придется настроить индекс на единицу, чтобы получить доступ к правильному значению.
onValueChange={(itemValue, itemIndex) => {
let item = this.state.data[itemIndex]
// now do something here
}
Это ужасное решение, но вы можете сделать это:
var x = "this is a \u201ctest\u201d".replace(/\/g,'\\')
// x is now "this is a \u201ctest\u201d"
eval('x = "' + x + '"')
// x is now "this is a “test”"
Это ужасно, потому что:
eval может быть опасным, если вы не знаете, что в строке
, кавычки в строке в выражении eval прервутся, если в вашей строке есть реальные кавычки
Как оказалось, нам нужен unescape (), но с "% uXXXX", а не с \ uXXXX " :
экранирования в (yourteststringhere.replace (/ & # 92; / г, '%'))
Вы уверены '\', единственный символ, который мог бы быть оставлен из HTML? Вы - верный '\uXXXX' действительно ли единственное, вид строкового используемого Escape?
В противном случае Вам будут нужны HTML-character/entity-reference-decoder общего назначения и JS-string-literal-decoder. К сожалению, JavaScript не имеет никаких встроенных методов для этого, и это довольно утомительно, чтобы сделать вручную с загрузкой regexps.
Возможно использовать в своих интересах декодер HTML браузера путем присвоения строки innerHTML свойству элемента и затем попросить, чтобы JavaScript декодировал строку как выше:
var el= document.createElement('div');
el.innerHTML= s;
return eval('"'+el.firstChild.data+'"');
Однако это - невероятно ужасный взлом и дыра в системе безопасности, если строка прибывает из источника, который не составляет 100%, которым доверяют.
Куда строки прибывают из? Было бы более хорошо, если это возможно, иметь дело с проблемой в конце сервера, где можно иметь более мощные текстовые функции обработки в наличии. И если Вы могли бы зафиксировать то, что это, это излишне выходит из HTML Ваши обратные косые черты, Вы могли найти, что проблема фиксирует себя.
Я не уверен, является ли это этим, но ответ мог бы иметь некоторое отношение к оценке (), если можно доверять входу.
Я думал в том же духе, но использование eval () во всех отношениях, которые я мог себе представить, приводило к одному и тому же экранированному выводу; например,
eval(new String("this is a \u201ctestamp;92;u201d"));
или даже
eval(new String("this is a \u201ctestamp;92;u201d".replace('/\/g','\')));
все приводит к одному и тому же результату:
"this is a \u201ctest\u201d";
Это как если бы мне нужно было заставить движок Javascript каким-то образом переоценить или повторно проанализировать строку, но я не знаю, что бы сделай это. Я подумал, что, возможно, eval () или просто создание новой строки с использованием правильно экранированного ввода сделает это, но теперь удача.
Основной вопрос - что мне нужно сделать, чтобы превратить данную строку:
"this is a \u201ctestamp;92;u201d"
в строка, которая использует правильные символы Unicode?