小编Dán*_*ács的帖子

React Router v4 NavLink活动路由

我正在尝试将我的项目从使用v3移植react-router到现在调用的v4 react-router-dom.现在问题出现在我有一个MenuBar组件,它完全独立于路由逻辑(正如你所期望的那样),因为无论当前路径是什么,它都会显示完全相同的链接.现在这与v3完美配合,但现在当我正在使用时NavLink,它具有相同的activeClassName属性,活动路由不会在NavBar上更新,仅在刷新时.这似乎有点愚蠢,所以必须有办法解决这个问题.

export default @inject('ui') @observer class App extends Component {
  render() {
    return (
      <Router>
        <div className={ styles.wrapper }>
          <Sidebar />
          <main className={ `${styles.main} ${!this.props.ui.menuOpen && styles.closed}` }>
            <Route exact path="/" component={ HomePage } />
            <Route path="/signup" component={ SignUpPage } />
            <Route path="/login" component={ LoginPage } />
            <Route path="/about" component={ AboutPage } />
          </main>
          <footer className="site-footer"></footer>
        </div>
      </Router>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

以上是我的主要App逻辑,你可以看到路由是嵌套的,但路由器本身包裹整个组件.

我应该添加什么才能使它们再次工作?(它们在页面刷新时可以正常工作)

javascript reactjs react-router react-router-v4

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

ES6 类上的自定义类似数组的 getter

我想创建一个Class,它也是常规 的包装器Array,但是我希望在通过索引引用类实例上的项目时发生一些自定义行为。

演示我想要实现的目标:

class Custom {
    constructor (arr) {
        this.arr = arr;
    }
    method (str) {
        this.arr.forEach(item => {
            console.log(`${item} ${str}`);
        })
    }
    [Magic.here] () {
        // this part should invoke the constructor of this class with a single item of the array passed into it as an array of one as argument.
    }
}

let c = new Custom(['something', 'other thing', 'hello?']);

c[1].method('exists?') // -> other thing exists?
Run Code Online (Sandbox Code Playgroud)

现在,我并不完全确定这是可能的。extend我确实通过ing 设法提出了自己不太好的解决方案ArrayProxy …

javascript arrays constructor class ecmascript-6

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

GoLang 获取字节切片中第 N 行的字符串

在个人项目中,我正在实现一个从长文件中返回随机行的函数。为了让它工作,我必须创建一个在第 N 行返回字符串的函数,第二个函数在文件中创建 0 和行之间的随机数。当我实现这些时,我认为默认情况下将数据存储在字节片中可能更有效,而不是将它们存储在必须在运行时读取的单独文件中。

问题:我将如何实现一个在[]byte文件表示的随机行返回字符串的函数。

我从文件中获取字符串的函数:

func atLine(n int) (s string) {
    f, err := os.Open("./path/to/file")
    if err != nil {
        panic("Could not read file.")
    }
    defer f.Close()
    r := bufio.NewReader(f)
    for i := 1; ; i++ {
        line, _, err := r.ReadLine()
        if err != nil {
            break
        }
        if i == n {
            s = string(line[:])
            break
        }
    }
    return s
}
Run Code Online (Sandbox Code Playgroud)

附加信息:

  • 行最多不超过 50 个字符
  • 行没有特殊字符(尽管欢迎处理这些特殊字符的解决方案)
  • 文件中的行数已知,因此同样适用于[]byte

string random byte go slice

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