Bir SmartView bileşeninin içindeki bir TextInput onChange
olayından redux durumunu güncellemeye çalışıyorum. Benim durumumda, oranların bir listesini görüntülüyorum. Düzenlenen oranı iki değerine ayırmak istiyorum. Ancak, setItem
yöntemine iletilen text
değeri beklediğim bir dize değil, ancak bir Text veya TextInput nesnesi gibi görünüyor.TextInput onChange olayı metin nesnesini almıyor dize
editItem
, redux durumunda düzenlemeyi gerçekleştiren bir redux eylemidir.
Girdi dizesi değerini nasıl iletebilirim, böylece bunu eyleme geçirebilirim? TextInput belgelerine
class DataList extends Component {
constructor(props) {
super(props);
// Bind the function so we can use it on onPress event
this.renderRow = this.renderRow.bind(this);
const { data } = this.props.currentData;
this.dataSource = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
})
}
render() {
// Keep dataSource up to date with redux state
const { data } = this.props.currentData;
const dataSource = this.dataSource.cloneWithRows(data.list);
return (
<View>
<ListView
dataSource={dataSource}
renderRow={this.renderRow}
renderSeparator={(sectionID, rowID) => <View key={`${sectionID}-${rowID}`} style={styles.separator} />}
style={[styles.list, {height: windowDims.height}]}
initialListSize={1}
/>
</View>
)
}
setItem(index, text) {
console.log (index + "; [" + text + "]")
console.log (text) // Prints out what looks like a Text or TextInput object
var { data } = this.props.currentData;
var numerator = parseInt (text.substring (0, text.indexOf('/'))) // Fails as it does not find a string
var denominator = parseInt (text.substring (text.indexOf('/')+1))
this.props.dispatch(editItem(index, { numerator: numerator, denominator: denominator }));
}
renderRow(rowData, sectionID, rowID) {
return (
<View style={styles.rowContainer}>
<TextInput
style={styles.textInput}
keyboardType={'numeric'}
onChange={(text) => this.setItem(rowID, text)}
value={rowData.numerator + "/" + rowData.denominator}
/>
</View>
);
}
}
Ya da kullanabilirsiniz. 'onChangeText' aynı sorunla sonuçlanır – Adamski
Aslında bu iyi bir ipucuydu! OnChangeText'in kullanılması, değiştirilen metin dizesiyle bir 'text' özelliği içeren bir nesne ile sonuçlanır. Teşekkürler! Bu ayrıntıyı eklemek için düzenlemek isterseniz cevabınızı kabul edeceğim ... – Adamski