【发布时间】:2017-12-20 02:31:42
【问题描述】:
更新 #2:我在 JSFiddle 上发布了 LinksScreen 和 TimelineDay 的代码。抱歉,我之前没有这样做!
更新:我使用 .我现在正在尝试更新timelineData,组件TimelineDay 中的一个道具并重新渲染LinksScreen 类。但是,在我的测试中没有任何反应。我对状态/道具非常陌生,因此非常感谢任何建议。
对 React/JS 非常陌生(新手提醒)。让我们进入我的问题的关键部分..
LinksScreen 类包含带有道具和外部组件的 flexbox 视图
import TimelineDay from '../components/TimelineDay.js';
export default class LinksScreen extends React.Component {
constructor() {
super();
this.onPress1 = this.onPress1.bind(this);
this.onPress2 = this.onPress2.bind(this);
this.onPress3 = this.onPress3.bind(this);
this.state = {
dayOne: [ . . ],
dayTwo: [. . ],
dayThree: [. . ],
}
}
标题中的按钮具有自定义 onPressX 函数,可使用相应的 dayOne、dayTwo 或 dayThree 数据更新 timelineData 属性。
render() {
return (
<View style={styles.container}>
<View style={styles.dayBar}>
<TouchableHighlight onPress={this.onPress1}>
<View>
<MaterialCommunityIcons name="numeric-1-box-outline" size={34} color="#FFD344"/>
<Text style={styles.day1Text}>Fri, 29th</Text>
</View>
</TouchableHighlight>
</View>
这些是相应的按钮功能,用适当的数组重新分配子道具timelineData
onPress1 = () => {
this.setState({timelineData: this.state.dayOne})
};
onPress2 = () => {
this.setState({timelineData: this.state.dayTwo})
};
onPress3 = () => {
this.setState({timelineData: this.state.dayThree})
};
我猜,通过调用 setState(),也会调用重新渲染。然而,这是我在测试中难以观察到的。
这是包含TimelineDay 组件和timelineData 道具的方法,我希望在单击按钮和重新分配道具时重新渲染它们。
<View style={styles.eventScheduleView}>
<TimelineDay ref={(timelineData) => {
timelineData = this.state.timelineData}}>
</TimelineDay>
</View>
这可能是一个非常有用的问题,但我(和我大学的黑客马拉松领导团队)需要额外的说明。
随意丢弃任何有用的资源(通量、状态等)。谢谢!
【问题讨论】:
-
您能否发布两个组件的完整代码,整齐地标记,以便每个人都知道他们在看什么?否则我们是在猜测。另外,不知道为什么要使用 refs。如果您重新格式化代码,我可以提供更多帮助。无需将组件分解为不同的代码部分,只需发布两个 sn-ps,父组件(LinkScreens)和子组件(TimelineDay)。
-
如果你是 React 的新手,如果你尝试使用像 Redux 这样的东西,你的思想也会像汤一样被蒸发掉。
-
对不起!看看我最近的更新。我为每个 @daniel-zuzevich 链接了 JSFiddles
标签: javascript reactjs react-native redux flux