SPFX 1.14リスト表示コマンドセット更新
The SPFx v1.14 リストビューのコマンドセットには、非常にエキサイティングな機能がほとんどありません.
参照issue #7811
If
新たにプロビジョニングされたプロジェクトは
私が特定のリスト(例えば旅行要求)のためにボタンを示すだけであると仮定しましょう.他のリストにそれを隠すために、現在の文脈からリストタイトル/URLを得る必要があります.
The
リストコンテキストを返す2つのプロパティがあります. 参照issue #7795
私は、したがって、中にボタンを隠しています
レイシオンチェンジ
raiseOnChange()
あなたがそれをすることをしません.ドキュメントはListViewのリフローを初期化することを約束しますが、リストビューではなく、コマンドセットを更新するために使用します.参照issue #7811
If
raiseOnChange()
いくつかの遅延で動作するように見える、それはSPOのリストが定期的にコンテンツを更新するためです.リストビュー
新たにプロビジョニングされたプロジェクトは
onListViewUpdated
イベントは、新しいコードを使用するコードを更新することができますlistViewStateChanged
. コマンドセット。TS
public onInit(): Promise<void> {
this.context.listView.listViewStateChangedEvent.add(this, this.onListViewUpdatedv2);
}
public onListViewUpdatedv2(args: ListViewStateChangedEventArgs): void{
}
SPFX V 115更新されたテンプレートを使用しますlistViewStateChanged
特定のリストのみのボタンを表示する
私が特定のリスト(例えば旅行要求)のためにボタンを示すだけであると仮定しましょう.他のリストにそれを隠すために、現在の文脈からリストタイトル/URLを得る必要があります.
The
listViewStateChangedEvent
最初のレンダリングでは実行されませんので、ボタンを非表示にすることはできません.私はそれを隠す必要がありますonInit
.リストコンテキストを返す2つのプロパティがあります.
this.context.pageContext.list.serverRelativeUrl
, しかし、リストコンテキストを正しく更新しませんthis.context.listView.list.serverRelativeUrl
でも返すundefined
デバッグ時私は、したがって、中にボタンを隠しています
onInit
, そして、それの間にlistViewStateChangedEvent
. listViewStateChangedEvent
私が電話する必要がある瞬間ですraiseOnChange
ボタンを確実に表示する.コマンドセット。TS
public onInit(): Promise<void> {
const _setCommandsHidden = () => {
const compareOneCommand: Command = this.tryGetCommand('COMMAND_1');
if (compareOneCommand) {
compareOneCommand.visible = false;
}
const compareTwoCommand: Command = this.tryGetCommand('COMMAND_2');
if (compareTwoCommand) {
compareTwoCommand.visible = false;
}
}
_setCommandsHidden();
return Promise.resolve();
}
public onListViewUpdatedv2(args: ListViewStateChangedEventArgs): void{
Logger.write("onListViewUpdatedv2");
const isCorrectList = (this.context.listView.list.title == "Travel requests") ? true : false;
const itemSelected = this.context.listView.selectedRows && this.context.listView.selectedRows.length == 1;
let raiseOnChange: boolean = false;
const compareOneCommand: Command = this.tryGetCommand('COMMAND_1');
if (compareOneCommand && (compareOneCommand.visible != isCorrectList )) {
compareOneCommand.visible = isCorrectList;
raiseOnChange = true;
}
const compareTwoCommand: Command = this.tryGetCommand('COMMAND_2');
if (compareTwoCommand && (compareTwoCommand.visible!= (isCorrectList && itemSelected))) {
compareTwoCommand.visible = isCorrectList && itemSelected;
raiseOnChange = true;
}
if (raiseOnChange) {
this.raiseOnChange();
}
}
を参照ください.GitHub :Reference
この問題について(SPFX 1.14リスト表示コマンドセット更新), 我々は、より多くの情報をここで見つけました https://dev.to/kkazala/spfx-114-list-view-command-set-updates-4b5pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol