小编use*_*499的帖子

使用create-react-app部署github页面的React-router问题

我正在努力将简单的反应应用程序部署到github页面.您将一个文件移动到错误的目录,它会关闭整个过程.

运行npm run build后我该怎么办?

这会把我的所有文件放到一个构建文件夹中,但是浏览器仍然会给我404错误,认为在初始url路由的"/"之后输入的任何内容都是从服务器查找实际文件.我只是想使用/在我的React路由器中设置的路由后... ... :(

http-status-code-404 github-pages reactjs webpack react-router

17
推荐指数
1
解决办法
2万
查看次数

NSCoding兼容是什么意思?

所以我正在阅读本教程,最后我想出了如何使用NSCoding归档对象,以及使用可用的初始化器再次从文件系统初始化它.

// To encode the object in the first place

func encode(with aCoder: NSCoder) {
        aCoder.encode(name, forKey: "name")
}

// To 're-initialize' the object

required init?(coder aDecoder: NSCoder) {
    self.name = aDecoder.decodeObject(forKey: "name") as! String
    super.init()
}
Run Code Online (Sandbox Code Playgroud)

但是,我仍然有点不确定整个过程如何在高水平上运作.请告诉我我的想法不正确.

1)如果你的对象采用NSCoding协议,你可以使用encode(with :)函数让NSCoder对象通过函数传递并执行'encode'方法,传递你的对象的实例属性(它本身就是一个对象) )作为第一个参数,以及表示键​​作为第二个值的字符串.

2)这是一个递归过程,基本上,你传递对象的实例属性(即名称)的原因是为了使THAT属性(它是一个对象)可以发送编码消息,依此类推,依此类推直到它不再到达NSCoding采用者.

3)aDecoder对象也可以对事物进行解码,因此在初始化自定义对象时,您将需要使用可用的初始化程序来解码为您使用的模糊字符串键设置的任何对象.

这是我真的不明白的......

aDecoder对象如何知道哪个单独的对象用于该组键?例如,假设我有10个狗对象实例.当系统通过一个解码器,并在其上使用decodeObject方法,并且它通过键将self.name设置为该解码对象的值时,aDecoder如何知道该狗的名称被保存为"杰克",而不是偶然抓住其中一个狗实例的名字,比如"Jodi"?

换句话说,一旦你对对象的属性进行编码,文件系统如何知道将对象实例A的属性与对象实例B的属性分开,这样,当应用程序被引导备份并且对象A被初始化时,它只是抓住对象A的属性?

谢谢

nscoder swift

8
推荐指数
1
解决办法
439
查看次数

React Router - BrowserHistory.Push VS. ContextTypes

我正在完成一个高级的react/redux教程并且遇到了讲师使用browserHistory.push链接到路由的过程中的一部分,而不是之前创建名为contextTypes的静态类变量并设置它的方法.等于像React.PropTypes.blah等等.

它与使用browserHistory.push有什么区别?与设置上下文类型相比,browserHistory.push作为程序重新路由似乎更容易.

谢谢!

javascript node.js reactjs react-router redux

5
推荐指数
1
解决办法
621
查看次数

JWT - 将它们存储在LocalStorage与SessionStorage中

感谢您抽出宝贵时间阅读我的问题!我今天一直在研究JWT.最初我认为现代的共识是,JWT对两种主要类型的攻击持开放态度,除非存储在httpOnly cookie中(只能由服务器发布).

背景:

但是,我今天了解到,只要您没有在JWT有效负载中放置任何机密用户信息,黑客可以访问令牌并对其进行解码,这是可以的,因为它最多只能显示用户的唯一ID .一旦服务器验证JWT并在有效负载的子密钥内抓取ID,我就可以处理服务器上的用户密码和其他机密信息.

尽管如此,如果黑客拦截例如令牌MID请求/响应,并且令牌永不过期,我仍然不能100%清楚地知道会发生什么.根据我的理解,黑客将能够访问用户的帐户并在用户的页面上乱七八糟,并且没有真正的方法从黑客中撤销令牌,即使用户重置了他或她的密码,因为黑客仍然有令牌和服务器不够聪明,没有意识到它不是预期的用户.


无论如何,我意识到我不能使用httpOnly cookie或任何cookie,因为我只使用后端服务器作为API,它无法将cookie交叉服务器传送到我面向前端客户端的程序(例如React).

在这种情况下,似乎只有两个地方存储您的身份验证JWT:LocalStorage或SessionStorage ...我猜大多数人会因为关闭浏览器不会破坏令牌而使用LocalStorage.

我的主要问题是:

由于LocalStorage或SessionStorage是存储JWT的唯一"合理"位置,因此比另一个更安全,为什么?

谢谢!

api token local-storage node.js jwt

4
推荐指数
1
解决办法
3403
查看次数

在斯威夫特,无主与弱参考

如果你的有一个弱的参考,这意味着狗在这种情况下是参考的"拥有者",它使用骨骼,但骨骼可以不存在,狗仍然可以运作(因为参考to bone是可选的).

然而,对于"无主",似乎关键字"无主"不是在所有者的引用声明中使用,而是在另一个对象中使用.例如,Bone对其狗的引用被标记为"无主".

无主是不安全的.如果所有者在程序中的某个时刻不存在,它可能会崩溃,并且它不能是可选的.为什么人们会使用无主而不是弱引用?

为什么不用弱?从我的理解来看,这只是与大声失败和失败的失败有关.在无主的情况下,如果骨头没有狗,应用程序将始终崩溃,而如果我们使用弱,您将最终得到一个仍然存在的骨骼,带有"幽灵"狗.

reference weak-references ios swift unowned-references

4
推荐指数
1
解决办法
4567
查看次数

Swift"h"必须绑定在每个模式错误中 - 切换问题

switch语句中的这个错误的原因是什么?"h必须绑定在每个模式中"?

我基本上试图将h用作小时变量,确保它不是nil(因为小时最初是一个可选值,然后看它是否大于17).我知道我在某个地方做错了什么,但那个讨厌的小'必须在每个模式中绑定'错误是什么?

谢谢

let date = NSDate()
let calendar = Calendar.current
let components = calendar.dateComponents([.hour], from: date as Date)
let hour = components.hour


switch hour {
case let h, (h as Int) != nil, h >= 17:
    return true
default:
    return false        
}
Run Code Online (Sandbox Code Playgroud)

pattern-matching switch-statement swift

4
推荐指数
2
解决办法
3187
查看次数

Swift ExpressibleByIntegerLiteral - 它究竟是如何工作的?

摘自iOs 10编程基础知识:

"因为Nest采用了​​ExpressibleByIntegerLiteral,我们可以传递一个需要嵌套的Int,我们的init(integerLiteral :)将被称为AUTOMATICALLY ....."

struct Nest : ExpressibleByIntegerLiteral {
     var eggCount : Int = 0
     init() {}
     init(integerLiteral val: Int) {
          self.eggCount = val
     }
}
Run Code Online (Sandbox Code Playgroud)

好吧所以我的问题是这个......它是如何被自动调用的?当我试图找出原因时,我的逻辑陷入了困境.从我看到的,你可以说:

var eggie : Nest = 5
Run Code Online (Sandbox Code Playgroud)

但是......好吧,等号后的数字5实际上是一个简写的逻辑在哪里:

var eggie : Nest = Nest(5)
Run Code Online (Sandbox Code Playgroud)

AKA初始化新实例的"标准"方式......

这只是处理该转换的ExpressibleByIntegerLiteral协议内部隐藏的东西吗?

谢谢

protocols ios swift

3
推荐指数
1
解决办法
869
查看次数

React Router - 使用参数的 CSS 样式中断?- 状态 304 未修改?

请帮忙。我一切正常,注册页面工作正常,登录页面也是如此。但是,例如,当我转到 url 路由 /user/3 时,它会破坏我放在 react/redux 应用程序公共目录中的自定义 CSS 样式页面。我的样式表根本不再被读取。只有引导程序样式。

当我查看 chrome 开发工具中的网络选项卡时,在我的其他路由上,样式表以状态 200 发送,但是当我尝试使用斜杠访问路由时,即 /user/4,样式表以 304 Not Modified 的形式发送。 ..

ReactDOM.render(
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <IndexRoute component={App}></IndexRoute>
      <Route path="/user/:user" component={UserDashboard}></Route>
      <Route path="/signup" component={Signup} />
      <Route path="/signin" component={Signin} />
    </Route>
  </Router>
  ,
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router redux

2
推荐指数
1
解决办法
1843
查看次数

当你有LET时,READ-only变量有什么意义?

例如:

var dogName : String {
 return "Buster"
}
Run Code Online (Sandbox Code Playgroud)

VS ..

let dogName = "Buster"
Run Code Online (Sandbox Code Playgroud)

假设我们在类的顶层将这些中的每一个声明为实例属性.这些只是做同样事情的两种方式吗?如果没有,那么拥有只读变量有什么意义呢?

谢谢

swift

2
推荐指数
1
解决办法
682
查看次数

学习Swift - inout函数 - 为什么要修改全局变量值?

我来自Javascript背景,我正在寻找一些关于Swift的清晰度.

在Javascript中,函数的参数仅存在于该函数的范围内.所以例如我可以毫无问题地做到这一点.

function greet(name) {
 name = "randomDude";
 return name
}

greet("Barry");
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为参数名称仅存在于greet函数的范围内.所以我可以改变名字的价值.

但是,在Swift中,我不能这样做:

func greet(name: String) {
   name = "Ardvark"
   print(name)
}

greet(name: "Drew")
Run Code Online (Sandbox Code Playgroud)

解决方案是将其更改为"inout"函数,该函数只能采用变量,即:

func greet(name: inout String) {
       name = "Ardvark"
       print(name)
    }

var name = "Drew"    
greet(name: name)
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,它实际上改变了var name的值.这意味着inout函数不会仅修改函数范围内PARAMETER的值,而是修改全局变量.

这是我必须接受的吗?是否有理由修改全局变量?你如何只修改函数greet中的变量'name'?

谢谢

javascript swift

1
推荐指数
1
解决办法
136
查看次数

UITableView - 什么是indexPath?

我正在网上做一个教程,现在建立一个单元格表,我有一个问题.在下面的第二个函数tableView中......究竟什么是indexPath?

更重要的是,程序如何知道每次调用函数时更新通过indexPath传递的值?

var rowNumber = 0

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 50
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let rowCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")
    rowCell.textLabel?.text = String(indexPath.row + 1)
    return rowCell
}
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift

1
推荐指数
1
解决办法
1694
查看次数