因此,我使用状态来控制文本输入,但是当我输入字符时,我不希望该字符立即显示。这是正在发生的事情: 1.我专注于文字输入 2.我输入一个字符。 3.字符快速显示在文本输入中。 4.字符迅速消失,并且由于状态尚未更改,值又返回到状态。
我想知道如果状态没有改变,如何防止角色首先出现。
这是一个简单的例子:
state = {
myValue: 'hello'
}
changedText = value => {
//Nothing here yet
}
...
render(){
return(
<Input
value={this.state.myValue}
keyboardType="numeric"
onChangeText={this.highIntervalDurationChange}
/>
);
}
如您所见,它并不复杂,我只是想找出一种方法,使按下的字符不会立即出现,因为当前它会出现并返回到状态。 (很明显,在弄清楚如何防止默认值发生后,我将修改状态。)我还尝试将editable设置为false,但这只是使它成为可能,所以我根本无法对其进行编辑。谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
问题在于您的input = this.state.myValue
的价值。记住react-native是react https://reactjs.org/docs/forms.html#controlled-components。由于状态未更新,因此输入不会自行更新。您看到的小变化是本机输入收到新值,但请记住,此值比值始终是hello
状态的原因。看起来好像没有更新,因为您没有在changeText
内调用它。
state = {
myValue: 'hello'
}
changedText = value => {
this.setState({ myValue: value })
}
...
render(){
return(
<Input
value={this.state.myValue}
keyboardType="numeric"
onChangeText={this.changedText}
/>
);
}
答案 2 :(得分:0)
您没有正确调用TextInput的onChangeText。将下面的代码与您的代码进行比较。
private Node createVideoDisplay(final AnchorNode parent, Vector3 localPosition, String title) {
// Create a node to render the video and add it to the anchor.
Node videoNode = new Node();
videoNode.setParent(parent);
videoNode.setLocalPosition(localPosition);
// Set the scale of the node so that the aspect ratio of the video is correct.
float videoWidth = mediaPlayer.getVideoWidth();
float videoHeight = mediaPlayer.getVideoHeight();
videoNode.setLocalScale(
new Vector3(
VIDEO_HEIGHT_METERS * (videoWidth / videoHeight),
VIDEO_HEIGHT_METERS, 1.0f));
// Place the text above the video
final float videoNodeHeight = VIDEO_HEIGHT_METERS+ localPosition.y;
ViewRenderable.builder().setView(this,R.layout.video_title)
.build().thenAccept(viewRenderable -> {
Node titleNode = new Node();
titleNode.setLocalPosition(new Vector3(0,videoNodeHeight,0));
titleNode.setParent(parent);
titleNode.setRenderable(viewRenderable);
((TextView)viewRenderable.getView().findViewById(R.id.video_text))
.setText(title);
});
return videoNode;
}