用列表反应中继操作
React Relay manipulation with list
结构是
store: (Component) => Relay.QL`
query StoreQuery {
store { ${Component.getFragment('store')} },
}
`,
store: () => Relay.QL`
fragment on Store {
activities {
${Activity.getFragment('activity')}
},
}
`,
activity: () => Relay.QL`
fragment on Activity {
name,
icon,
color
}
`,
我得到 props.activities 作为一个列表,然后我想操作这个列表,例如排序或删除不需要的,等等。但是我看到那里有中继对象,无法理解如何获取数据和在设置为组件之前更改它?
从中继传递到每个组件的数据被屏蔽,因此即使另一个组件碰巧请求它,您也无法访问它。为了访问任何字段,您必须请求它。
比如说,外部组件想要根据 name
字段对活动进行排序。您需要将片段更新为以便在该组件中也明确询问名称。
fragment on Store {
activities {
name
${Activity.getFragment('activity')}
},
}
好处是,即使内部片段出于某种原因删除了 name
字段,外部组件仍然会有数据。这是一个关键行为,可以在不知道完整应用程序的情况下在本地推理组件。
结构是
store: (Component) => Relay.QL`
query StoreQuery {
store { ${Component.getFragment('store')} },
}
`,
store: () => Relay.QL`
fragment on Store {
activities {
${Activity.getFragment('activity')}
},
}
`,
activity: () => Relay.QL`
fragment on Activity {
name,
icon,
color
}
`,
我得到 props.activities 作为一个列表,然后我想操作这个列表,例如排序或删除不需要的,等等。但是我看到那里有中继对象,无法理解如何获取数据和在设置为组件之前更改它?
从中继传递到每个组件的数据被屏蔽,因此即使另一个组件碰巧请求它,您也无法访问它。为了访问任何字段,您必须请求它。
比如说,外部组件想要根据 name
字段对活动进行排序。您需要将片段更新为以便在该组件中也明确询问名称。
fragment on Store {
activities {
name
${Activity.getFragment('activity')}
},
}
好处是,即使内部片段出于某种原因删除了 name
字段,外部组件仍然会有数据。这是一个关键行为,可以在不知道完整应用程序的情况下在本地推理组件。