[英]React component to access sharepoint
I am trying to build a component that user can browse files from share point online.我正在尝试构建一个组件,用户可以从在线共享点浏览文件。
I did search but they are mainly about creating share point web parts.我进行了搜索,但它们主要是关于创建共享点 web 零件。 Found something called GraphFileBrowser but did not had luck with it.
找到了一个叫做GraphFileBrowser但没有运气的东西。
I can browse this url https://domain.sharepoint.com/folder1/folder2/Documents/Forms/AllItems.aspx
in my browser.我可以在浏览器中浏览此 url
https://domain.sharepoint.com/folder1/folder2/Documents/Forms/AllItems.aspx
Trying to point the file browser to same place试图将文件浏览器指向同一个地方
import React from 'react';
import { GraphFileBrowser } from '@microsoft/file-browser';
class FileBrowser extends React.Component {
getAuthenticationToken() {
return new Promise<string>(resolve => {
resolve(
"token"
);
});
}
render() {
return (
<GraphFileBrowser
getAuthenticationToken={this.getAuthenticationToken}
endpoint='https://domain.sharepoint.com/folder1/folder2/Documents/Forms/AllItems.aspx'
/>
);
}
}
export default FileBrowser;
In network tab I can see it trying to connect在网络选项卡中,我可以看到它正在尝试连接
https://domain.sharepoint.com/folder1/folder2/Documents/Forms/AllItems.aspx/drive/items/
Seems to be appending /drive/items/
at the end somehow似乎以某种方式在末尾附加
/drive/items/
Give me below error as well也给我下面的错误
file-browser_en-us.js:47237 Uncaught SyntaxError: Unexpected token < in JSON at position 2
at Object.parse (<anonymous>)
at file-browser_en-us.js:47237
at Object.m [as _notify] (file-browser_en-us.js:4981)
at Object.enter (file-browser_en-us.js:5192)
at e._run (file-browser_en-us.js:5487)
at e._completed (file-browser_en-us.js:5469)
at e._callSuccessCallback (file-browser_en-us.js:47440)
at e._requestEndCallback (file-browser_en-us.js:47465)
at XMLHttpRequest.d.onreadystatechange (file-browser_en-us.js:47399)
Not sure is this the right way to implement such a thing.不确定这是否是实施此类事情的正确方法。 Any direction on this please
请对此有任何指导
Sample demo to use this library.使用此库的示例演示。
Get graph token follow this thread .获取图形令牌遵循此线程。
Use this library in SPFx(React component code).在 SPFx(React 组件代码)中使用这个库。
import * as React from 'react';
import styles from './ReactSpFx.module.scss';
import { IReactSpFxProps } from './IReactSpFxProps';
import { escape } from '@microsoft/sp-lodash-subset';
import { SPHttpClient, SPHttpClientResponse} from '@microsoft/sp-http';
import Slider from "react-slick";
import "../../../../node_modules/slick-carousel/slick/slick.css";
import "../../../../node_modules/slick-carousel/slick/slick-theme.css";
import { any } from 'prop-types';
import { GraphFileBrowser } from '@microsoft/file-browser';
export interface IReactItem{
ID:string,
Title:string,
Address:string
}
export interface IReactGetItemsState{
items:IReactItem[],
selectValue:string
}
declare global {
interface Window { _graphToken: any; }
}
export default class ReactSpFx extends React.Component<IReactSpFxProps,IReactGetItemsState> {
public constructor(props: IReactSpFxProps) {
super(props);
window._graphToken =props.userToken;
this.state = {
items:[],
selectValue:"Radish"
};
this.next = this.next.bind(this);
this.previous = this.previous.bind(this);
}
public getAuthenticationToken():Promise<string> {
return new Promise(resolve => {
resolve(
window._graphToken
);
});
}
public componentDidMount() {
var reactHandler = this;
this.props.context.spHttpClient.get(`${this.props.context.pageContext.web.absoluteUrl}/_api/web/lists/getbytitle('TestList')/items?select=ID,Title,Address`,
SPHttpClient.configurations.v1) .then((response: SPHttpClientResponse) => {
response.json().then((responseJSON: any) => {
reactHandler.setState({
items: responseJSON.value
});
});
});
}
protected slider;
next() {
this.slider.slickNext();
}
previous() {
this.slider.slickPrev();
}
handleChange = (event) => {
this.setState({selectValue:event.target.value});
};
public render(): React.ReactElement<IReactSpFxProps> {
const settings = {
dots: true,
infinite: true,
speed: 500,
slidesToShow: 1,
slidesToScroll: 1
};
alert(this.state.selectValue);
return (
<div className={styles.reactSpFx}>
<div className={styles.container}>
{/* {(this.state.items || []).map(item => (
<div key={item.ID} className={styles.row}>{item.Title}
<div dangerouslySetInnerHTML={{ __html: item.Address.replace(/[\n\r]/g,"<br/>")}}></div>
</div>
))} */}
</div>
{/* site id */}
<GraphFileBrowser
getAuthenticationToken={this.getAuthenticationToken}
endpoint='https://graph.microsoft.com/v1.0/sites/tenant.sharepoint.com,xxxx-b669-x-x-x,xxxx-x-x-x-x'
onSuccess={(selectedKeys: any[]) => console.log(selectedKeys)}
onCancel={(err: Error) => console.log(err.message)}
/>
<select
value={this.state.selectValue}
onChange={this.handleChange}>
<option value="Orange">Orange</option>
<option value="Radish">Radish</option>
<option value="Cherry">Cherry</option>
</select>
<div>
<h2> Single Item</h2>
<Slider ref={c => (this.slider = c)} {...settings}>
<div>
<h3>1</h3>
</div>
<div>
<h3>2</h3>
</div>
<div>
<h3>3</h3>
</div>
<div>
<h3>4</h3>
</div>
<div>
<h3>5</h3>
</div>
<div>
<h3>6</h3>
</div>
</Slider>
<br/>
<br/>
<div style={{ textAlign: "center" }}>
<button className="button" onClick={this.previous}>
Previous
</button>
<button className="button" onClick={this.next}>
Next
</button>
</div>
</div>
</div>
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.