1
- import React , { useState } from "react" ;
1
+ import React , { useState , useEffect } from "react" ;
2
2
import {
3
3
Radio ,
4
4
Row ,
@@ -182,10 +182,6 @@ const formulas = [
182
182
logo : require ( "../imgs/formula/sqrt.svg" ) ,
183
183
} ,
184
184
] ;
185
- const link = getUrlParameter ( "link" ) || "" ;
186
- const title = getUrlParameter ( "title" ) || "" ;
187
- const code = getUrlParameter ( "code" ) || "" ;
188
- const initialLanguage = getUrlParameter ( "language" ) ?. toLowerCase ( ) || "python3" ;
189
185
190
186
const saveDraft = debounce (
191
187
( v ) =>
@@ -196,7 +192,7 @@ const saveDraft = debounce(
196
192
) ;
197
193
198
194
export default function SolutionTemplate ( ) {
199
- const [ language , setLanguage ] = useState ( initialLanguage ) ;
195
+ const [ language , setLanguage ] = useState ( "" ) ;
200
196
const [ time , setTime ] = useState ( "n" ) ;
201
197
const [ space , setSpace ] = useState ( "n" ) ;
202
198
const [ isLucifer , setIsLucifer ] = useState ( false ) ;
@@ -205,11 +201,39 @@ export default function SolutionTemplate() {
205
201
time,
206
202
space,
207
203
language,
208
- link,
209
- title,
210
- code,
211
204
} )
212
205
) ;
206
+ useEffect ( ( ) => {
207
+ fetch (
208
+ `https://api.github.com/repos/azl397985856/stash/issues/${ getUrlParameter (
209
+ "issue_number"
210
+ ) } `,
211
+ {
212
+ headers : {
213
+ accept : "application/json" ,
214
+ "Content-Type" : "application/json" ,
215
+ Authorization : "token f4fed02e90310c97be2c51b5b97b1f5b3ad91a23" ,
216
+ } ,
217
+ }
218
+ )
219
+ . then ( ( res ) => res . json ( ) )
220
+ . then ( ( res ) => JSON . parse ( res . body ) )
221
+ . then ( ( res ) => {
222
+ const { link, title, code, language, desc } = res ;
223
+ setLanguage ( language ?. toLowerCase ( ) ) ;
224
+ setTemplate (
225
+ getTemplate ( {
226
+ desc,
227
+ time,
228
+ space,
229
+ language : language ?. toLowerCase ( ) ,
230
+ link,
231
+ title,
232
+ code,
233
+ } )
234
+ ) ;
235
+ } ) ;
236
+ } , [ ] ) ;
213
237
214
238
return (
215
239
< >
@@ -220,8 +244,8 @@ export default function SolutionTemplate() {
220
244
题解每五秒备份一次,如果你不小心刷新了浏览器可以点击下方的恢复按钮还原。由于是覆盖式备份,因此仅会保存最后一次编辑的内容。
221
245
</ li >
222
246
< li >
223
- 由于浏览器 url
224
- 传参限制,题目信息和代码暂时不会自动带过来,后续考虑使用服务器转存实现自动带入的功能 。
247
+ 自动带入功能使用了 Github API,如果题目信息没有自动带入可能是
248
+ Github API 调用次数限制。后���考虑搞个服务器给大家存放 。
225
249
</ li >
226
250
< li > 目前公式无法预览,原因暂时不明,不过后期会支持。</ li >
227
251
< li > 后续考虑提供更多题解模板。</ li >
0 commit comments