아래 코드를 가지고 있는데 의 화면 중 하나에서 Tabscreen
상태를 변경하는 것이 좋습니다. 하지만 현재 상태를 설정하는 전역 함수로,이 작업을 수행하려고 방법있는, 단순히 오류 나는이 작업을 수행 할 수있는 방법 undefined is not a function (evaluating 'this.setstate')
React-native의 다른 구성 요소에서 한 구성 요소의 상태 변경
import React from 'react';
import {Image, Text, TouchableNativeFeedback, TouchableHighlight} from 'react-native';
import {TabNavigator} from 'react-navigation';
import {Container, Header, Icon, Left, Body} from 'native-base';
import Timeline from './Timeline';
const Mainscreen=TabNavigator(
{
Main:{
screen: Timeline,
navigationOptions:{
tabBarIcon: ({tintColor}) => <Icon name='home' style={{color:tintColor}}/>
}
},
Search:{
screen: props => <Container><TouchableHighlight onPress={()=>globalStateUpdate()}><Container style={{backgroundColor:'rgba(0,132,180,0.5)'}}></Container></TouchableHighlight></Container>,
navigationOptions:{
tabBarIcon: ({tintColor}) => <Icon name='search' style={{color:tintColor}}/>
}
},
}
);
function globalStateUpdate(){
this.setState({
header:<Text>Search</Text>
});
}
class Tabscreen extends React.Component {
constructor(props){
super(props);
this.state={
header:<Text>Home</Text>
};
globalStateUpdate = globalStateUpdate.bind(this);
}
render() {
return (
<Container>
<Header hasTabs >
<Left>
{this.state.header}
</Left>
<Body/>
</Header>
<Mainscreen/>
</Container>
);
}
}
export default Tabscreen;
으로 작동하지 않는 이유는 무엇입니까? 항법 탐색은 내 응용 프로그램에 매우 중요하며이를 제거 할 수는 없습니다. 나는 Redux가 이것을 해결할 수있는 것이라고 생각하지만, 단 하나의 텍스트 변경만으로는 너무 복잡해 보입니다. 필요한 모든 것입니다.
시도' '다음 화면 개체, 예 : onPress = {props.globalStateUpdate}''시도가 TabNavigator의 내부 - 나는 사과하지 않을 경우, 상기 다만 찔러 문제는 코드를 로컬에서 재현하기 전에 발생합니다. –
Dan
@Dan 답장을 보내 주셔서 감사합니다. 오류를 제거하지만 텍스트는 여전히 변경되지 않습니다. – AZG
생성자를'this.globalStateUpdate = globalStateUpdate.bind (this);'로 변경하고' '- 다음은 React https://codesandbox.io/를 사용하는 예제입니다. s/0qm840ln30 –
Dan