javascript - 如何在 React 中获取从状态生成的查询参数

标签 javascript html reactjs

我看过几篇与此相关的帖子,但它们似乎都从固定的参数中获取参数。示例:

<Link to=`/lista/:idList`}> <button>Go To List</button> </Link>

然后你可以让他们这样做:

componentDidMount() {
    console.log(this.props.match.params);
 }

但是如果在我的应用程序中我有这样的东西怎么办:

 <Link to={`/lista/${this.state.url_lista}`}> <button>Go To List</button> </Link>

参数取决于父组件 (CreateList.js) 的状态,当我单击转到列表时,应用程序将转到子组件 ( TheList.js)。如果我想获取参数(基本上是 this.state.url_lista),那么我不能执行上述操作,可以吗?

我也无法将状态从父级传递给子级,对吗?

这是两个组件的代码:

export default class CreateList extends Component {
  state = {
    listaIsCreated: false,
    lista: "",
    url_lista: ""
  }

  createList = (event) => {
    event.preventDefault()

    this.setState({
      listaIsCreated: true,
      lista: event.target.elements.titulolista.value
    })

    const tituloLista = event.target.elements.titulolista.value;
    axios.post('http://localhost:4000/api/list', {
      title: tituloLista
    })
      .then(res => {
        console.log(res)

        let id_newList = res.data._id;

        this.setState({
          url_lista: id_newList
        })
      })
      .catch(error => {
        console.error(error)
      })
  }

  render() {
          </div>
              <Link to={`/lista/${this.state.url_lista}`}> <button>Go To List</button> </Link>
            </div>

      )
    }
  }
}

export default class TheList extends React.Component {

    state = {
        titulo_lista: ""
    }
    componentDidMount() {
        console.log(this.props.match.params);
         // Do get request using the url params
     }
    
        render(){
            return (
               
            )
        }
    }

最佳答案

如果,正如您所描述的,TheListCreateList的 child ,那么你可以将 prop 从父级传递给子级。但在您的代码示例中,两个代码文件似乎无关,没有 <TheList>里面<CreateList>渲染函数。

我怀疑两者之间的实际联系可能隐藏在 React Router 内,因为您的代码似乎得到 props.match从某个地方。如果您的解决方案不起作用,您是否尝试过?如果React Router处理 URL,如果 /lista/:idList被定义为一条路线,其中 :idList作为一个参数,它应该可以通过 props.match.params.idList 之类的方式访问。 。请参阅How to get params in component in react router dom v4 .

现在推荐的另一种在组件之间共享信息的方法,即使它们没有作为父子耦合,也是 context API .

关于javascript - 如何在 React 中获取从状态生成的查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787036/

相关文章:

javascript - 无法在我的网站上重现 XSS?

javascript - d3.js 在哪里搜索文件

html - 左右对齐的两条线比后面的 <div> 有更大的垂直间距

html - Eclipse 在显示工具提示消息之前挂起 3-4 秒

javascript - 使用 npm 包导出我自己的流类型?

javascript - 以编程方式切换到网页的生产源

javascript - 三元运算符未按预期工作

javascript - 如何获取 kendo MVVM 的选定名称元素

javascript - 可选择将参数传递给被传递的函数

node.js - Uncaught Error : Cannot find module "fs" when using webpack