我的代码如下.它对我编译很好,但是我的教授说他得到了一个错误,因为我的班级中没有一些变量被宣布为final.Eclipse在我的机器上似乎没有问题所以我不知道如何修复我看不到的错误.
我理解一些变量需要最终才能在嵌套类中工作,但是我创建的变量似乎工作正常,最终与否.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Random;
public class JColorFrame extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JColorFrame frame = new JColorFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public JColorFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, …Run Code Online (Sandbox Code Playgroud) 我有一个呈现文件列表的组件。它的方法是简单的添加、更新和删除。我遇到了尖叫关闭问题的行为,但我不知道是什么。该组件将 state 中的文件列表存储为数组。所以在渲染时我只是映射它们。更新项目的工作正如您所期望的那样,所以我相信为该方法传递了正确的 id,但删除总是传递映射的最后一个项目的 id。
因此,如果我添加了 3 个项目: 1. 文件 #1 2. 文件 #2 3. 文件 #3
然后我点击更新 #2 - 一切正常 文件 #2 设置为我放在那里的任何文件,状态反映了正确的列表。
但是如果我尝试删除文件 #1 或 #2 文件 #3 将被删除。
我错过了什么?
// npm modules
import React, { useState } from 'react';
import randomstring from 'randomstring';
// components
import { PrimaryButton, InlineButton } from "../buttons/buttons";
import { AdminInput } from "../inputs/textInputs";
export const AdminSlides = ({ setSlides }) => {
const [ state, updateState ] = useState({
slides: [],
}); …Run Code Online (Sandbox Code Playgroud) 在我的文档就绪函数中,我创建了一个对象videoList,当我检查并单步执行代码时,对象确实存在了很短的时间.但是,在创建后不久,它将被返回,而不是由另一个函数定义.我的代码看起来像:
$(document).ready(function(){
var videoList = new Object();
videoList.videoPlaylist = [];
videoList.addNew = function(data){
$('.videoPlayer iframe').first().remove();
}
videoList.removeOld = function(){
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个名为video.js的文件.在另一个文件buffer.js中,它在video.js之后加载并且不包含在ready函数中我有:
function loadTracks(playlistID){
if(GoogleAuth.currentUser.get().hasGrantedScopes(SCOPE)){
var request = gapi.client.request({
'method':'GET',
'path':'/youtube/v3/playlistItems',
'params':{
'playlistId':playlistID,
'part':'snippet',
'maxResults':'15',
'key':'AIzaSyD0OY6xhl9gP9CmPXvU-rN-purRDaTrip8'
}
});
request.execute(function(response){
$('.playlistContainer').html('');
response.items.forEach(function(element){
$('.playlistContainer').append('<div class="songTrack"><img src="'+element.snippet.thumbnails.medium.url+'"/><span data-videoId = "'+element.snippet.resourceId.videoId+'">'+element.snippet.title+'</span></div>');
});
$('.songTrack').click(function(){
var data = $(this).data('videoid');
videoList.addNew(data);
console.log('I was clicked');
});
console.log(response);
});
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的要点是,它将一个视频列表添加到容器中,每个视频都应该是可点击的.videoList对象最终将包含大量视频,addNew和removeOld将处理数组维护.我还在学习对象但是从我收集的内容中,不应该将videoList对象放在全局范围内并且可以访问该loadTracks()函数吗?
经过一段时间后,我正在尝试将react路由器重定向到另一个页面.
我到目前为止的代码是:
submitActivity(){
axios.post('/tiles', {
activityDate:this.state.startDate,
planId:this.state.planId,
value:this.state.sliderValue
})
.then(res=>{
console.log(res);
this.modalHandleShow();
setTimeout(function(){
this.goBackToTile();
}.bind(this),3000);
})
.catch(err=>console.log(err));
}
goBackToTile(){
this.props.history.push(`tile/${this.state.tileId}`)
}
Run Code Online (Sandbox Code Playgroud)
历史肯定被称为,但目前的网址
/addActivity/tile/2/plan/9
Run Code Online (Sandbox Code Playgroud)
只会更改为/ addActivity/tile/2/plan/tile/2
虽然/ tile/2是正确的我不明白为什么其余的url保持机智?
我正在尝试销毁客户端的 cookie,但似乎无法弄清楚如何去做。我已经尝试了护照和 SO 上提供的一些答案的几种方法,但我不知道如何清除实际的 cookie。
到目前为止我的代码是:
app.get('/logout', function (req, res){
sessionStore.destroy(req.sessionID, (err) =>{
if(err)console.log(err);
req.logout();
req.session.destroy(function (err) {
if(err) console.log(err);
res.status(200).json({message : 'User Logged Out'});
});
});
});
Run Code Online (Sandbox Code Playgroud)
我也试过这个req.logOut();方法。
我试图弄清楚为什么调用this.setState没有更新状态.
我有以下几行方法:
changeState(state, value){
this.setState({state:value}, ()=>console.log(this.state));
}
Run Code Online (Sandbox Code Playgroud)
有一些功能使用它,但一个是文件上传组件.它是一个简单的组件,可以呈现文件输入,也可以呈现iframe,禁用输入和按钮.单击该按钮时,我想更改父组件中的状态,然后重新呈现文件组件并显示文件选择器.
对this.setState的调用似乎工作正常,但是当我在运行后控制日志状态或者在下一次渲染发生之前我停止执行时,状态不受影响.我的文件上传组件有一个这样的方法:
renderField(field){
if(this.props.hasOwnProperty('file') && this.props.file){
return(
<div>
<iframe src={this.props.file} frameborder="0"> </iframe>
<input
disabled
placeholder={this.props.file}
name={field.name}
type='text'
/>
<span onClick={()=>this.props.changeFile(this.props.file_type, null)}>× Remove</span>
</div>
)
}else{
return(
<input
{...field}
type={field.type}
name={field.name}
onChange={(event) =>{
field.input.onChange(field.input.value = event.target.files[0])}
}
/>
)
}
}
Run Code Online (Sandbox Code Playgroud)
javascript ×4
reactjs ×3
cookies ×1
express ×1
final ×1
java ×1
jquery ×1
node.js ×1
object ×1
passport.js ×1
react-router ×1