React Native setState不重新渲染

时间:2019-05-08 23:18:17

标签: reactjs react-native state render

此组件的预期行为如下:我按它,调用了selectedOpacity()函数,更新了状态,因此现在使用opacity = 1进行渲染。

但是由于某种原因,在调用this.setState之后,不会重新呈现它。我必须再次单击该组件以使其重新呈现,并应用状态的不透明度更改。

export default class Category extends Component {

state = {
  opacity: 0.5
}

selectedOpacity() {
  // some stuff
  this.setState({opacity: 1})
}

render() {
 return(
  <TouchableOpacity style={[styles.container, {opacity: this.state.opacity}]} onPress={() => {
    this.selectedOpacity();
  }}>
  </TouchableOpacity>
 )
}

3 个答案:

答案 0 :(得分:0)

selectedOpacity 更改为箭头功能:

selectedOpacity = () => {
  this.setState({opacity: 1})
}

然后:

onPress={this.selectedOpacity}

编辑:react文档说它是实验性的,其语法称为public class field syntax

答案 1 :(得分:0)

我认为您缺少的是selectedOpacity()的绑定,否则SELECT REGEXP_REPLACE ( REGEXP_SUBSTR ( '1.2.P Permission Level - ${Permission_manager_approval}', 'manager_([[:alnum:]]+\.?){3,4}/?'), '^(\S*)', 'Manager_approval') FROM DUAL; 在AFAIK中将是未定义的。

也最好将状态分配移到构造函数()。

String No = "00098000002208";

也更改为以下内容,因为creating an arrow function inside render affects performance

this

答案 2 :(得分:-1)

尝试将按一下更改为 onPress={() => this.selectedOpacity()}