GVKun编程网logo

vue 中有
表单标签导致按钮点击无法路由跳转 this.$router.push 失效

2

如果您想了解vue中有表单标签导致按钮点击无法路由跳转this.$router.push失效的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于./node_modules/react-rou

如果您想了解vue 中有 表单标签导致按钮点击无法路由跳转 this.$router.push 失效的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于./node_modules/react-router-dom/react-router-dom.js尝试导入错误:未从“ react-router”导出“ Navigate”、jquery 中 $(''li'',''form'')、$(''li,form'')、$(''li form'')、react-router – React Router v4 for Form、router.go,router.push,router.replace的区别的有价值的信息。

本文目录一览:

vue 中有 <form> 表单标签导致按钮点击无法路由跳转 this.$router.push 失效

vue 中有 表单标签导致按钮点击无法路由跳转 this.$router.push 失效

注意:这是一个大坑,如果你的 from 表单和 button 按钮用的不是 elementUI 这种契合 Vue 规范的,一定要阻止 form 表单的默认提交事件,这会导致路由无法跳转

后来发现是 form 表单的默认提交事件导致的,我们来使用 click.prevent 阻止 form 表单的默认提交事件
<div>
    <button @click.prevent="submitForm(''loginform'')">Login</button>
</div>

也可以删除这个 form 标签如果没用的话

./node_modules/react-router-dom/react-router-dom.js尝试导入错误:未从“ react-router”导出“ Navigate”

如何解决./node_modules/react-router-dom/react-router-dom.js尝试导入错误:未从“ react-router”导出“ Navigate”

./node_modules/react-router-dom/react-router-dom.js Attempted import error: ''Navigate'' is not exported from ''react-router''.

react-router-dom的版本是6.0.0-alpha.2,而react-router是5.2.0。 两者均已正确安装。我不确定如何解决此错误。有人可以给我任何可能的解决方法吗?

我的代码中甚至没有<Navigate to=?>行。

解决方法

为什么只安装两个都需要,这可以工作

  1. 执行npm删除react-router
  2. 删除node_modules
  3. 纱线安装或npm安装和
  4. 启动纱线或启动npm

jquery 中 $(''li'',''form'')、$(''li,form'')、$(''li form'')

jquery 中 $(''li'',''form'')、$(''li,form'')、$(''li form'')

$ 表示的是 JQuery 常用的一个回传函数,其实就是英文是 selector 的缩写,定义为 "选取" 。

1、$(''li'',''form''):是selector (子,父),也就是在父节点中找子节点,即是在“form”节点中寻找li。

2、$(''li, form''):是寻找所有的“li”节点和“form”节点,而“li”节点和“form”节点之间没有父子关系。

3、$(''li form'') 的意思是寻找“li”节点下属的所有“form”节点,包括子级,孙子级等等多层关系。

react-router – React Router v4 for Form

react-router – React Router v4 for Form

我该如何使用< Link>使用< form>?我试图避免编程路由,因为我看到许多警告反对它.

表格有两个字段:

<form>
    <input type="text" id="what"/>
    <input type="text" id="where"/>
    <Link><button type="submit"></Link>
</form>

我的目标是将页面发送到’/’document.getElementById(‘where’).value’/’document.getElementById(‘what’).value,是否可以使用v4路由器?

解决方法

使用v4,< Link>仅用于创建< a>元素.

我认为大多数针对程序化导航的警告来自人们并不真正理解历史是如何工作的,特别是在尝试在组件之外进行时. withRouter HOC提供了一种向组件添加路由的简便方法.

另外,我会从表单组件而不是按钮中进行路由.然后,您只需要确保按钮的类型是提交(这是默认值).

您还使用DOM函数来访问代码中的值.我建议改为使用受控输入,但这显然取决于你.

class NavForm extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      what: '''',where: ''''
    }

    this.submitHandler = this.submitHandler.bind(this)
    this.handleInput = this.handleInput.bind(this)
  }

  handleInput(event) {
    const target = event.target
    this.setState({
      [target.name]: target.value
    })
  }  

  submitHandler(event) {
    event.preventDefault()
    // do some sort of verification here if you need to
    this.props.push(`${this.state.where}/${this.state.what}`)
  }

  render() {
    return (
      <form onSubmit={this.submitHandler}>
        <input
          type=''text''
          name=''what''
          value={this.state.what}
          onChange={this.handleInput} />
        <input
          type=''text''
          name=''where''
          value={this.state.where}
          onChange={this.handleInput} />
        <button>Submit</button>
      </form>
    )
  }
}

export default withRouter(NavForm)

router.go,router.push,router.replace的区别

router.go,router.push,router.replace的区别

除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 router.push(...)

声明式 编程式 <router-link :to="..."> router.push(...)

该方法的参数可以是一个字符串路径,或者一个描述地址的对象,例如:

// 字符串
router.push(''home'')

// 对象
router.push({ path: ''home'' })

// 命名的路由
router.push({ name: ''user'', params: { userId: 123 }})

// 带查询参数,变成 /register?plan=private
router.push({ path: ''register'', query: { plan: ''private'' }})

const userId = 123
router.push({ name: ''user'', params: { userId }}) // -> /user/123
router.push({ path: `/user/${userId}` }) // -> /user/123
// 这里的 params 不生效
router.push({ path: ''/user'', params: { userId }}) // -> /user

router.replace(location, onComplete?, onAbort?)

跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

声明式 编程式 <router-link :to="..." replace> router.replace(...)

router.go(n)

这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)

例子:

// 在浏览器记录中前进一步,等同于 history.forward()
router.go(1)

// 后退一步记录,等同于 history.back()
router.go(-1)

// 前进 3 步记录
router.go(3)

// 如果 history 记录不够用,那就默默地失败呗
router.go(-100)
router.go(100)

 

我们今天的关于vue 中有 表单标签导致按钮点击无法路由跳转 this.$router.push 失效的分享已经告一段落,感谢您的关注,如果您想了解更多关于./node_modules/react-router-dom/react-router-dom.js尝试导入错误:未从“ react-router”导出“ Navigate”、jquery 中 $(''li'',''form'')、$(''li,form'')、$(''li form'')、react-router – React Router v4 for Form、router.go,router.push,router.replace的区别的相关信息,请在本站查询。

本文标签: