小编vma*_*uet的帖子

如何在JSX中使用map嵌套循环?

我无法实现两个嵌套map:

render() {
    return (
      <table className="table">
        <tbody>
          {Object.keys(this.state.templates).map(function(template_name) {
            return (
              <tr key={template_name}><td><b>Template: {template_name}</b></td></tr>

              {this.state.templates[template_name].items.map(function(item) {
                return (
                  <tr key={item.id}><td>{item.id}</td></tr>
                )
              })}
            )
          })}
        </tbody>
      </table>
    )
  }
Run Code Online (Sandbox Code Playgroud)

这给了一个SyntaxError: unknown: Unexpected token.

你如何map在JSX中嵌套调用?

javascript jsx reactjs

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

如何制作"按TabNavigator选项卡时返回初始StackNavigator屏幕"

介绍

就像Facebook,Instagram和任何其他移动应用程序一样,我想实现'回到Stacknavigator中的初始屏幕'

  1. 如果用户按下按钮,
  2. 它会回到第一页.

简单的用例

  1. 见TabNavigator
  2. 转到"Feed"标签
  3. 转到"用户"屏幕
  4. 转到另一个"用户"屏幕
  5. 按主选项卡图标 - 'Feed'}
  6. 返回"Feed"标签//这样您就不会看到"后退"按钮

如果您不理解这个用例,请发表评论,我将为您绘制其状态流程

主TabNavigator上的图标代码.

navigationOptions: ({ navigation }) => ({
      header: null,
      tabBarIcon: ({ focused }) => {
          const { routeName } = navigation.state;
          ....
          return (
              <TochableWithoutFeedback onPress={()=>{navigation.goback(iconName)}> 
              // undefined is not a function when I press the Button 
              // deeper screen. (not getting any error on Main)
                  <Ionicons
                      name={iconName}
                      size={30}
                      style={{ marginBottom: -3 }}
                      color={focused ? Colors.tabIconSelected : Colors.tabIconDefault}
                      />
             <TochableWithoutFeedback>
         );
  },
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation

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

Heroku 上的 Rails 6:`SassC::SyntaxError:错误:未定义变量:“$body-bg”`

从 Rails 5 升级到 Rails 6.0.3.1 后,我的 SCSS 无法在 Heroku 上编译:

remote:        yarn install v1.16.0
remote:        [1/4] Resolving packages...
remote:        [2/4] Fetching packages...
remote:        info fsevents@1.1.3: The platform "linux" is incompatible with this module.
remote:        info "fsevents@1.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        [3/4] Linking dependencies...
remote:        warning "@rails/webpacker > postcss-cssnext@3.1.0" has unmet peer dependency "caniuse-lite@^1.0.30000697".
remote:        warning " > webpack-dev-server@2.11.2" has unmet peer dependency "webpack@^2.2.0 || ^3.0.0".
remote:        warning "webpack-dev-server > webpack-dev-middleware@1.12.2" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sass heroku sass-rails

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

TypeScript:错误TS2322:类型“ {}”不可分配给类型“ ...”

我有一个界面:

export default interface ValidationResult {
  valid: boolean
  errors?: string[]
}
Run Code Online (Sandbox Code Playgroud)

还有一个返回实现该接口的对象的函数:

  static validateTitle(title: string): ValidationResult {
    if (title == null || title === '')
      return {valid: false, errors: ["Title can't be empty."]}

    return {valid: true}
  }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在另一个函数中使用第一个函数时:

static async validateMovie(title: string): Promise<ValidationResult> {
    const result = this.validateTitle(title)
    if (result.valid === false)
      return new Promise((resolve, reject) => { resolve(result) })
    // other validations...
}
Run Code Online (Sandbox Code Playgroud)

我收到TypeScript错误:

error TS2322: Type '{}' is not assignable to type 'ValidationResult'.
  Property 'valid' is missing in …
Run Code Online (Sandbox Code Playgroud)

typescript

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

更改选项卡时重置导航堆栈(嵌套在TabNavigator中的StackNavigator)

我有两个StackNavigator。电影:

const MoviesStackNavigator = createStackNavigator({
  Movies: Movies,
  MovieDetails: MovieDetails,
},{
  initialRouteName: 'Movies',
})
Run Code Online (Sandbox Code Playgroud)

和演员:

const ActorsStackNavigator = createStackNavigator({
  Actors: Actors,
  ActorDetails: ActorDetails,
},{
  initialRouteName: 'Actors',
})
Run Code Online (Sandbox Code Playgroud)

我在TabNavigator中使用它们:

const RootTabs = createBottomTabNavigator({
  Movies: {
    screen: MoviesStackNavigator,
    navigationOptions: {
      tabBarLabel: 'Movies'
    }
  },
  Actors: {
    screen: ActorsStackNavigator,
    navigationOptions: {
      tabBarLabel: 'Actors'
    }
  },
})
Run Code Online (Sandbox Code Playgroud)

当用户更改选项卡时,我希望他到达该选项卡的根组件(Movies或Actors),而不是堆叠组件(MoviesDetails或ActorsDetails)。换句话说,当用户退出选项卡时,该选项卡中的StackNavigator应重置为根组件。

我的第一种方法是StackActions.reset在初始化选项卡中的根组件时尝试重置其他选项卡(用户刚刚退出),但是该库至少以这种方式阻止了导航器之间的交互。

那么,有什么想法吗?

react-navigation

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