反应本机路由器通量:覆盖组件内的左键或右键并访问本地功能
react native router flux: override left or right button inside component and access local function
我能够覆盖组件内的按钮但无法调用本地函数,例如当我按下 "Refresh" 时,没有任何反应。这是覆盖按钮文本和执行功能的正确方法吗?感谢您的帮助。谢谢。
import { WebView } from 'react-native'
import React, { PropTypes, Component } from 'react';
import { View, Text } from 'react-native';
import styles from '../src/styles/home'
var WEBVIEW_REF = 'webview';
class WebViewComponent extends Component {
static rightTitle = "Refresh";
static onRight() {
this.reload;
}
static propTypes = {
url: PropTypes.string,
scalesPageToFit: PropTypes.bool,
startInLoadingState: PropTypes.bool,
};
static defaultProps = {
url: 'http://google.com',
scalesPageToFit: true,
startInLoadingState: true,
};
render() {
return (
<WebView
ref={ WEBVIEW_REF }
style={ { flex: 1, marginTop: 50 } }
source={ { uri: this.props.url } }
scalesPageToFit={ this.props.scalesPageToFit }
startInLoadingState={ this.props.startInLoadingState } />
);
}
reload = () => {
alert('reload');
};
}
module.exports = WebViewComponent;
经过一些研究我得到了答案,不要使用静态,使用 componentDidMount()
import { WebView } from 'react-native'
import React, { PropTypes, Component } from 'react';
import { View, Text } from 'react-native';
import styles from '../src/styles/home'
var WEBVIEW_REF = 'webview';
class WebViewComponent extends Component {
//here is the answer
componentDidMount() {
Actions.refresh({rightTitle: 'Refresh', onRight: this.reload})
}
static propTypes = {
url: PropTypes.string,
scalesPageToFit: PropTypes.bool,
startInLoadingState: PropTypes.bool,
};
static defaultProps = {
url: 'http://google.com',
scalesPageToFit: true,
startInLoadingState: true,
};
render() {
return (
<WebView
ref={ WEBVIEW_REF }
style={ { flex: 1, marginTop: 50 } }
source={ { uri: this.props.url } }
scalesPageToFit={ this.props.scalesPageToFit }
startInLoadingState={ this.props.startInLoadingState } />
);
}
reload = () => {
alert('reload');
};
}
module.exports = WebViewComponent;
我能够覆盖组件内的按钮但无法调用本地函数,例如当我按下 "Refresh" 时,没有任何反应。这是覆盖按钮文本和执行功能的正确方法吗?感谢您的帮助。谢谢。
import { WebView } from 'react-native'
import React, { PropTypes, Component } from 'react';
import { View, Text } from 'react-native';
import styles from '../src/styles/home'
var WEBVIEW_REF = 'webview';
class WebViewComponent extends Component {
static rightTitle = "Refresh";
static onRight() {
this.reload;
}
static propTypes = {
url: PropTypes.string,
scalesPageToFit: PropTypes.bool,
startInLoadingState: PropTypes.bool,
};
static defaultProps = {
url: 'http://google.com',
scalesPageToFit: true,
startInLoadingState: true,
};
render() {
return (
<WebView
ref={ WEBVIEW_REF }
style={ { flex: 1, marginTop: 50 } }
source={ { uri: this.props.url } }
scalesPageToFit={ this.props.scalesPageToFit }
startInLoadingState={ this.props.startInLoadingState } />
);
}
reload = () => {
alert('reload');
};
}
module.exports = WebViewComponent;
经过一些研究我得到了答案,不要使用静态,使用 componentDidMount()
import { WebView } from 'react-native'
import React, { PropTypes, Component } from 'react';
import { View, Text } from 'react-native';
import styles from '../src/styles/home'
var WEBVIEW_REF = 'webview';
class WebViewComponent extends Component {
//here is the answer
componentDidMount() {
Actions.refresh({rightTitle: 'Refresh', onRight: this.reload})
}
static propTypes = {
url: PropTypes.string,
scalesPageToFit: PropTypes.bool,
startInLoadingState: PropTypes.bool,
};
static defaultProps = {
url: 'http://google.com',
scalesPageToFit: true,
startInLoadingState: true,
};
render() {
return (
<WebView
ref={ WEBVIEW_REF }
style={ { flex: 1, marginTop: 50 } }
source={ { uri: this.props.url } }
scalesPageToFit={ this.props.scalesPageToFit }
startInLoadingState={ this.props.startInLoadingState } />
);
}
reload = () => {
alert('reload');
};
}
module.exports = WebViewComponent;