你好,
感谢伟大的模块 - 他们有什么方法可以动态更改标题和导航栏的状态。
例如。
<Route key="UserCredentials" name="UserCredentials" hideNavBar={this.state.UserCredentialsNavBar} component={UserCredentials} initial={ false } title={this.state.title} schema="withoutAnimation" />
然后我会有一个监听器,它会改变状态 this.state.UserCredentialsNavBar 'true' 或 'false' 和 this.state.title 'Some title' 或 'Some other title'。
我试过了,但没有得到任何地方。
提前致谢。
:0)
我刚刚添加了使用 Actions.refresh(props) 在没有导航器转换的情况下设置属性的支持,请尝试一下(版本 2.3.1)
谢谢阿克索诺夫。
我可能没有正确理解你。
因此,例如,如果我想更改标题的状态。 我会打电话Actions.refresh({title: 'Some other title'})
非常感谢您回复我。
:0)
我的不好,一切都很好。 非常感谢您的帮助 aksonov。 非常感激。 :0)
我遇到了一个问题,这里似乎是动态设置标题的错误。 似乎 Actions.refresh 为所有路由设置了它,覆盖了它们的静态标题。
就我而言,我有一个主从设置,其中主路由有一个标题道具,而详细路由标题仅动态设置。 当我在详细路线中并且标题发生变化时,标题和后退按钮都更改为相同的文本。 当返回到 master 时,动态标题保持不变(而不是返回到它的模式标题)。
我是 React Native 的新手,所以我不确定这是否是设计使然...?
谢谢!
即使我目前不在那个场景中,有没有办法为特定场景设置它? IE
Actions.refresh({key: 'home', title: 'My new title'})
@greatwitenorth你的具体用例是什么?
例如,如果您使用键view2
导航到视图,您可以使用这样的道具设置标题
Actions.view2({ title: 'My New Title' })
我的问题是我没有导航到需要更新标题的场景。 我的屏幕更新了用户的地址,但地址在一个完全独立的屏幕上显示为标题。
@greatwitenorth我遇到了同样的问题。 如何在不导航到更改了标题的新路线的情况下更改标题?
好的,我应该更好地阅读文档,只是Actions.refresh({title: 'new title'})
@greatwitenorth你有没有找到合适的解决方案?
我正在从状态中获取标题,因此每当状态发生变化时,我都希望特定视图将该值作为标题。 有时人们会更改标题并通过后退按钮导航,在这种情况下,我似乎无法定义 {title: } 参数(并在后退动作中传递状态值),或者我错过了什么?
在组件的生命周期方法之一(或渲染)中刷新,会使应用程序崩溃,因为它可能由于状态属性更改而进入无限循环。
亲切的问候,
@JeroenNelen我遇到了类似的问题,并通过将刷新放入 ComponentDidMount 并在 Redux 减速器中设置状态来解决它 - 我将 Redux 操作绑定到每个更改标题的用户操作中,更新应用程序状态,并且刷新读取更新的道具也。
所以基本上类似于 ComponentDidMount 中的这一行:
Actions.refresh({title: this.props.state.myapp.myvalue})
@jondbm感谢您的建议,但我们决定切换到不同的导航器。
亲切的问候,
@JeroenNelen你现在使用哪个导航器? (如果你不介意分享)
为什么下面的设置没有刷新右键? console.log 写入新值,但正确的标题永远不会刷新?
const RouterWithRedux = connect()(Router);
export class App extends Component {
constructor(props) {
super(props);
}
render() {
let title = '(' + this.props.basket.length + ')';
console.log(title);
return (
<RouterWithRedux rightTitle={title} onRight={() => alert('All right')}>
<Scene key="root">
<Scene key="home" component={Main} title="Main"/>
<Scene key="page1" component={SomePage} title="SomePage"/>
</Scene>
</RouterWithRedux>
);
}
}
App.propTypes = {
dispatch: PropTypes.func.isRequired
};
// Wrap the component to inject dispatch and state into it
export default connect(
state => {
return {basket: state.basket.items}
}
)(App);
@jaynakus righttitle 还是右键?
标题!
我建议使用自定义导航栏,无论您想在其中做什么。
@jaynakus尝试将您的 rightTitle 和 onRight 放入您的 Scene 组件而不是顶部 RouterWithRedux 级别,这可能会起作用。
@jondbm将它们放入根场景并没有解决,但是在 componentWillReceiveProps 中调用 Actions.refresh() 可以解决问题;)
const RouterWithRedux = connect()(Router);
export class App extends Component {
constructor(props) {
super(props);
}
componentWillReceiveProps(nextProps) {
if (this.props.basket.length !== nextProps.basket.length) {
console.log(nextProps.basket.length);
let title = '(' + nextProps.basket.length + ')';
Actions.refresh({rightTitle: title});
}
}
render() {
let title = '(' + this.props.basket.length + ')';
return (
<RouterWithRedux>
<Scene key="root" rightTitle={title} onRight={() => alert('All right')}>
<Scene key="home" component={Main} title="Main"/>
<Scene key="page1" component={SomePage} title="SomePage"/>
</Scene>
</RouterWithRedux>
);
}
}
App.propTypes = {
dispatch: PropTypes.func.isRequired
};
// Wrap the component to inject dispatch and state into it
export default connect(
state => {
return {basket: state.basket.items}
}
)(App);
看这里: https :
这太棒了,有没有一种干净的方法在切换时淡入/淡出标题? 就我而言,当用户滚动超过 100 像素时,我会切换标题。 淡化过渡会很好。 干杯。
@greatwitenorth你的具体用例是什么?
例如,如果您使用键view2
导航到视图,您可以使用这样的道具设置标题```js
Actions.view2({ title: '我的新标题' })
我们如何在安装文件中访问它?
如果我有这样的配置:
<Router>
<Scene key="root" navBar={NavBar}>
<Scene
hideNavBar
key="login"
component={Login}
initial
/>
<Scene drawer
drawerPosition="right" drawerWidth={300}
key="task"
contentComponent={DrawerView}
drawerIcon={drawerIcon}
rightButtonImage="menu"
onRight={() => {
Actions.drawerOpen()
}} hideNavBar
>
<Scene key="taskInner"
leftButtonImage="arrow-back"
component={TaskView}
onLeft={() => {
Actions.popTo('tasksList')
}}
/>
</Scene>
</Scene>
</Router>
然后 Actions.task({ title: 'My New Title' }) 或 Actions.refresh({title: "My New Title"}) 不起作用。 有抽屉时如何设置标题或发送一些属性?
最有用的评论
谢谢阿克索诺夫。
我可能没有正确理解你。
因此,例如,如果我想更改标题的状态。 我会打电话
Actions.refresh({title: 'Some other title'})
非常感谢您回复我。
:0)